我想匹配十进制数,例如:
0.0
0.12
1.00
1.12
-0.123
-1.000
-1.123
不匹配负零:-0.0
或 -0.00
、-0.000
等
我不知道如何扩展 /^-?[0-9]+\.[0-9]+$/
正则表达式以不允许负零。
更新:
- 不允许有前导零:01.1 或 -01.1
- 需要使用整数和小数字符(不允许使用 .5 或 5.)
最佳答案
IIUC,你只需要添加一个否定的前瞻性 (?!-0\.0+$)
:
^(?!-0\.0+$)-?\d+\.\d+$
例子:
echo '0.0
0.12
1.00
1.12
-0.123
-1.000
-1.123
-0.00
-0.0
-0.000010
-12.34
' | perl -lne 'print if /^(?!-0\.0+$)-?\d+\.\d+$/'
#0.0
#0.12
#1.00
#1.12
#-0.123
#-1.000
#-1.123
#-0.000010
#-12.34
关于regex - 匹配小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56453383/