如何解决Dart Regexp 替换除数字之外的所有内容并允许一次要么 ,
我需要替换所有不是数字的内容,并且只允许第一个 ,
或 .
。
final string = _lengthController.text?.replaceAll(RegExp('[^0-9,.]'),'')
这是我到目前为止所得到的,它工作正常,但允许 ,
.
多次。
那么我怎样才能在第一个之后替换每个 ,
和 .
,而不是每个都替换一个,但总共只允许一个。
解决方法
你可以使用
text.replaceAllMapped(RegExp(r'^([^,.]*[.,])|\D+'),(Match m) =>
m[1] != null ? m[1].replaceAll(RegExp(r'[^0-9,.]+'),'') : '')
^([^.,]*[.,])|\D+
正则表达式匹配
-
^([^,])
- 字符串的开头,然后是除,
和.
之外的任何字符,然后是捕获到 Group 1 中的.
或,
-
|
- 或 -
\D+
- 任何一个或多个非数字字符。
如果第一个替代匹配,则应保留 ,
和 .
,因此 .replaceAll(RegExp(r'[^0-9,'')
用于删除除数字、.
和 {{1 之外的所有字符}}。
如果 ,
匹配,则表示第一个 \D+
或 .
已经匹配,因此替换为空字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。