^ #Match at start of string
( #start capture group
[0-9]* # 0-9, zero or more times
[1-9] # 1-9
[0-9]* # 0-9, zero or more times
( #start capture group
\. # literal .
[0-9]+ # 0-9, one or more times
)? #end group - make it optional
| #OR - If the first option didn't match, try alternate
[0]+ # 0, one or more times ( change this to 0* for zero or more times )
\. # literal .
[0-9]* # 0-9, zero or more times
[1-9] # 1-9
[0-9]* # 0-9, zero or more times
) #end capture group
$ #match end of string
6条答案
按热度按时间iq0todco1#
只需将
[0]
后面的+
更改为ansterisk `*":因此,在点之前不允许一个或多个零,只允许0或更多。
k3fezbri2#
我喜欢这个用于浮点数的正则表达式,它非常聪明,因为它不会将
0.0
作为一个数字进行匹配。它要求在句号的两边至少有一个非零的数字。当然,我会把它分成几个部分,以便更深入地了解它。正则表达式内部有两个较小的模式,第一个模式匹配数字>= 1的情况(.的左边至少有一个非零字符),可选地允许一个带有一个或多个尾随数字的句号。第二个匹配<1.0,并确保点的右侧至少有一个非零数字。
Johannes的答案已经给出了问题的
[0]*
解决方案。通过几个regexp快捷方式,您可以在大多数regexp风格中将
[0-9]
的任何示例替换为\d
。另外,[0]
只匹配0
,因此您也可以使用0*
而不是[0]*
。最后的regexp:xuo3flqw3#
我会用这个:
这允许数字表达式以
允许:
但不是:
0yg35tkg4#
你也可以使用一个简单的表达式,如:
shstlldc5#
改为:
或者更短:
ioekq8ef6#
我一直在这方面的工作,从相当长的一段时间,我得到了一些很好的表达,效果很好
它识别带/不带前导0的数字/小数。以下是regx101上的演示
添加演示在这里的情况下链接不工作
O/P