正则表达式查找十进制/浮点数?正则表达式查找十进制/浮点数?(regular expression

2019-05-13 14:37发布

我需要十进制/浮点数等12 12.2 1236.32 123.333和12.00 -12.00或或... 123.123正则表达式...用于使用在JavaScript和jQuery。 谢谢。

Answer 1:

任选地匹配+或 - 在开始,接着是一个或多个十进制数字,任选之后是十进制点和一个或多个十进制数字的util的字符串的末尾:

/^[+-]?\d+(\.\d+)?$/

RegexPal



Answer 2:

正确的表达应该如下:

[+-]?([0-9]*[.])?[0-9]+

这适用于:

+1
+1.
+.1
+0.1
1
1.
.1
0.1

下面是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))

输出:

True
1.0

如果您使用的是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))"


Answer 3:

您可以检查文本验证并且还使用isNaN只有一个小数点验证

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


Answer 4:

Paulpro和lbsweek答案使我这个:

re=/^[+-]?(?:\d*\.)?\d+$/;
>> /^[+-]?(?:\d*\.)?\d+$/

re.exec("1")
>> Array [ "1" ]

re.exec("1.5")
>> Array [ "1.5" ]

re.exec("-1")
>> Array [ "-1" ]

re.exec("-1.5")
>> Array [ "-1.5" ]

re.exec(".5")
>> Array [ ".5" ]

re.exec("")
>> null

re.exec("qsdq")
>> null


Answer 5:

这是一个老的文章,但它是为“正则表达式的浮点”或类似的东西顶部的搜索结果并不十分回答_my_问题。 由于我的工作了,我会分享我的结果让谁碰到这个线程出现的下一个人没有去解决它自己。

所有的答案迄今接受一家领先的0与小数点左边两个(或更多)的数字(例如,在数字0123 ,而不是仅仅123 )这是不是真的有效,在某些情况下是用来标明编号是八进制(碱-8),而不是常规的十进制(碱-10)的格式。

还这些表达式接受没有前导零(十进制.14而不是0.14 )或无的后小数部分( 3.代替3.0 )。 这是在某些编程环境中(包括JavaScript)有效,但我想不让他们(因为我的目的,那些更有可能比故意的错误)。

忽略“科学记数法”之类1.234E7 ,这里是符合我的条件表达式:

/^((-)?(0|([1-9][0-9]*))(\.[0-9]+)?)$/

或者,如果你真的想接受一个领先+ ,则:

/^((\+|-)?(0|([1-9][0-9]*))(\.[0-9]+)?)$/

我认为,正则表达式将会为典型的整数或小数风格的浮点数进行了严格的测试。

当匹配:

  • $1包含了相匹配的完整号码
  • $2包含(可能为空)领先的符号(+/-)
  • $3包含值小数点左边
  • $5包含值小数点的权利,包括领先.

通过“严格”我的意思是数必须要测试的字符串中的唯一的事。

如果你想只提取浮动值了包含其他内容中使用这个表达式字符串:

/((\b|\+|-)(0|([1-9][0-9]*))(\.[0-9]+)?)\b/

这将找到-3.14"negative pi is approximately -3.14.""(-3.14)"等。

该数目组具有相同的含义同上(除$2现在是一个空字符串( "" )时,有没有领先的标志,而不是null )。

但要注意,它也将尝试提取任何数字,它可以找到。 例如,它会解压127.0127.0.0.1

如果你想要的东西比这更复杂的话,我想你可能想在词法分析一下正则表达式来代替。 我猜一个可以创建一个能够认识到,基于前瞻表达"Pi is 3.14." 包含一个浮点数,但Home is 127.0.0.1. 没有,但它充其量是复杂的。 如果你的模式依赖于它之后进来的不平凡的方式人物你开始正则表达式最佳点以外的企业。



文章来源: regular expression for finding decimal/float numbers?