用于查找十进制/浮点数的正则表达式?

MBe*_*mam 34 javascript regex floating-point decimal

我需要十进制/浮点数的正则表达式,如12 12.2 1236.32 123.333和+12.00或-12.00或... 123.123 ...用于在javascript和jQuery中使用.谢谢.

Pau*_*aul 70

可选择在开头匹配+或 - ,后跟一个或多个十进制数字,可选后跟一个小数点,并在字符串末尾使用一个或多个十进制数字:

/^[+-]?\d+(\.\d+)?$/
Run Code Online (Sandbox Code Playgroud)

RegexPal

  • @ jfriend00如果减号是字符类中的第一个或最后一个字符,则字面上指定一个减号.所以在这种情况下,所有的`[+ - ]`,`[ - +]`,`[+\ - ]`和`[\ - +]`都是等价的. (3认同)
  • @ jfriend00不,它不需要.它不可能是一个范围,因为它是类中的最后一个字符,所以它是一个字面减号.只需在你的控制台中尝试:`/ ^ [+ - ]?\ d +(\.\ d +)?$/.test(' - 1')` (2认同)
  • @AralRoca OP没有迹象表明他们希望它与`e`一起使用. (2认同)

lbs*_*eek 6

正确的表达应如下所示:

[+-]?([0-9]*[.])?[0-9]+
Run Code Online (Sandbox Code Playgroud)

这适用于:

+1
+1.
+.1
+0.1
1
1.
.1
0.1
Run Code Online (Sandbox Code Playgroud)

这是Python示例:

import re
#print if found
print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0')))
#print result
print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0))
Run Code Online (Sandbox Code Playgroud)

输出:

True
1.0
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Mac,则可以在命令行上进行测试:

python -c "import re; print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0')))"

python -c "import re; print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0))"
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用 isNaN 检查文本验证以及仅一位小数点验证

var val = $('#textbox').val();
var floatValues =  /[+-]?([0-9]*[.])?[0-9]+/;
 if (val.match(floatValues) && !isNaN(val)) {
  // your function
}
Run Code Online (Sandbox Code Playgroud)