Dart Regexp替换除数字以外的所有数据,并允许一次。或
我需要替换不是数字的所有内容,只允许第一个Dart Regexp替换除数字以外的所有数据,并允许一次。或,regex,flutter,dart,currency,Regex,Flutter,Dart,Currency,我需要替换不是数字的所有内容,只允许第一个、或 final string = _lengthController.text?.replaceAll(RegExp('[^0-9,.]'), '') 到目前为止,这是我得到的,它工作正常,但允许,多次 因此,如何在第一个、和之后替换每个,,不允许每个都替换一个,但总共只能替换一个。您可以使用 text.replaceAllMapped(RegExp(r'^([^,.]*[,]))\D+,(Match m)=> m[1]!=null?m[1]。rep
、
或
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+
正则表达式匹配
^([^,.]*[,])
-字符串的开头,然后是除、
和以外的任何字符,然后将
或,
捕获到组1中
|
-或
\D+
-任何一个或多个非数字字符
如果第一个选项匹配,则应保留、
和
,因此.replaceAll(RegExp(r'[^0-9,.]+'),'')
用于删除除数字以外的所有字符,
和,
如果\D+
匹配,则表示第一个
或,
已匹配,因此此替代项为空字符串。我理解r'(?不,这不适用于快速回答,它适用于
但根本不适用于,
@StevenDz你能提供一个例子吗?32,43
不会formatted@StevenDz你期望什么呢?32,43
是正确的(因为你要求“在第一个、
和之后替换每个,
,每个都不允许,但总共只能替换一个”)转换为32,43
321,32
必须保持不变。很抱歉,它工作正常,因为它不是,
的双精度,所以引发了另一个expeption,因此ui没有更新。因此我需要将,
替换为,谢谢