regex - 匹配小数

标签 regex pcre

我想匹配十进制数,例如:

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/

相关文章:

javascript - 正则表达式 javascript 匹配 href

java - 否定 Java 正则表达式中的文字字符串

java - Android:通过Regex方法传递文本,并显示在EditText上

c++ - 在 pcre++ 中命名捕获的子串

r - 仅在顶层拆分带有嵌套括号的字符串,其中 "level"由括号确定

regex - 为什么 [\n$] 不起作用而 (\n|$) 起作用?

javascript - jQuery 在 html var 中全局替换整数

Javascript string.replace() 用于替换

如果字符串中的多个选项中只有一个匹配项,则正则表达式匹配

regex - .htaccess 中的正则表达式不匹配空格字符