RegExp。我需要用前导零来推进我的表达式

RegExp。我需要用前导零来推进我的表达式,regex,dart,Regex,Dart,我得到了我的RegExp:“^[0-9]{0,6}$|^[0-9]\d{0,6}[,]\d{0,2}” 我需要升级上面的条件,才能使用“000”这样的输入。它的格式应为“0.00” 我希望得到一个输入和输出列表: 投入: [5555, 55.5, 55.55, 0.50, 555555.55, 000005, 005] 产出: [5555, 55.5, 55.55, 0.50, 555555.55, 0.00005, 0.05]使用regexp时,重要的是用散文形式描述您希望它匹配的内容,然后描

我得到了我的RegExp:“^[0-9]{0,6}$|^[0-9]\d{0,6}[,]\d{0,2}”

我需要升级上面的条件,才能使用“000”这样的输入。它的格式应为“0.00” 我希望得到一个输入和输出列表: 投入: [5555, 55.5, 55.55, 0.50, 555555.55, 000005, 005]

产出: [5555, 55.5, 55.55, 0.50, 555555.55, 0.00005,
0.05]

使用regexp时,重要的是用散文形式描述您希望它匹配的内容,然后描述您希望对该匹配执行的操作

在本例中,您的RegExp匹配一个完全由0-6位数字组成的字符串,或者匹配一个以1-7位数字开头的字符串。或,然后是0-2位数字

也就是说:要么是一个带数字和数字的字符串,要么是一个带数字和数字的字符串。之后最多有2位数字

然后要求将000转换为0.00。我猜您希望将数字规范化为没有不必要的前导零和两个十进制数字。 现在有更多的例子,我猜一个有前导零且没有小数点的数字应该在第一个零后加上小数点

我同意使用适当的数字格式化程序可能是一种方法,但由于我们讨论的是regexp,因此如果必须使用regexp,我会做以下几点:

使用捕获组,以便轻松查看匹配的零件。 使用不捕获前导零的regexp。 不要试图在regexp中计数。如有必要,在侧面的代码中执行此操作。 比如:

final _re=RegExpr^\d{0,6}$|^\d{1,7}[,.]\d{0,2}; 字符串格式字符串编号{ var match=_re.firstMatchnumber; 如果match==null,则返回null; var小数=匹配[1]; 如果小数!=空,则返回小数; 变量noDecimals=匹配[0]; if!noDecimals.startsWith'0'返回noDecimals; 返回0.${noDecimals.substring1}; }
这与您的RegExp匹配相同的字符串。

假设transform指的是format,为什么要使用regex格式化?为什么不新建NumberFormat.00.formatdouble.parsestr?提供一些输入和输出字符串对的示例。确保包含任何边缘案例。边缘案例如何:空字符串,0.,00.501,1.000?所有这些都与您的RegExp匹配。