Regex 正则表达式作用域太大
我已经创建了一个(大部分)工作正则表达式,它接受您可能使用的任何大于0或的数字Regex 正则表达式作用域太大,regex,floating-point,integer,Regex,Floating Point,Integer,我已经创建了一个(大部分)工作正则表达式,它接受您可能使用的任何大于0或的数字 ^(?=[^1-9]*[1-9])0*(?:(?:\d|1[01])?(?:\.[0-9]{0,2})?|12(?:\.0{0,2})?)$ 请参阅和: 如果需要小数分隔符后的数字,请将{0,2}替换为{1,2}: ^(?=[^1-9]*[1-9])0*(?:(?:\d|1[01])?(?:\.[0-9]{1,2})?|12(?:\.0{1,2})?)$ 详细信息 ^-字符串的开头 (?=[^1-9]*[1-
^(?=[^1-9]*[1-9])0*(?:(?:\d|1[01])?(?:\.[0-9]{0,2})?|12(?:\.0{0,2})?)$
请参阅和:
如果需要小数分隔符后的数字,请将{0,2}
替换为{1,2}
:
^(?=[^1-9]*[1-9])0*(?:(?:\d|1[01])?(?:\.[0-9]{1,2})?|12(?:\.0{1,2})?)$
详细信息
-字符串的开头^
-一种正向前瞻,要求在任何字符(从(?=[^1-9]*[1-9])
到1
的数字除外)后面有一个非零数字(从9
到1
)9
-任何0+前导零0*
-启动非捕获组:(?:
-(?:\d|1[01])?(?:\[0-9]{1,2})
到0
数字(可选匹配,请参见第一个右括号后的11
),后跟可选的?
序列和1到2位数字
-或|
-12(?:\.0{1,2})
可选后跟12
和1到2位数字
-非捕获组的结束)
-字符串结尾$
12
的特殊情况,然后您可以将[0-2]
更改为[0-1]
。非常有用,谢谢。虽然它仍然接受0,但大部分都有效。我怎么也拒绝0?@JoeCoyle对不起,我完全错过了那部分。将第一个[0-9]
替换为[1-9]
。我更新了所有的演示和解释。谢谢,接近了!我可能应该在问题中更清楚地说明这一点,但我也想包括0-1之间的数字,例如0.25。理想情况下,我们也可以考虑像.25这样的格式,但这是可选的。然后您需要^(?=[^1-9]*[1-9])0*(?:(?:\d | 1[01])?(?:\.[0-9]{0,2})?\124; 12(?:\.0{0,2})$,
,请参见“优秀”-工作完美。太感谢你了!