例如:
10个
0.1
1.23234
123.123
0.000001
1.000
0.3
错误的例子:
0001.2
-12
-1.01
2.3
编辑:标准JavaScript正则表达式。
答案 0 :(得分:32)
在这里试试
^(?:[1-9]\d*|0)?(?:\.\d+)?$
如果不想匹配空字符串,则可以在正则表达式中添加长度检查,如
^(?=.+)(?:[1-9]\d*|0)?(?:\.\d+)?$
正向前瞻(?=.+)
确保至少有一个字符
答案 1 :(得分:9)
这将通过所有测试用例,启用多线模式:
/^(?!0\d)\d*(\.\d+)?$/mg
说明:
/^ # start of regex and match start of line
(?!0\d) # not any number with leading zeros
\d* # consume and match optional digits
(\.\d+)? # followed by a decimal and some digits after, optional.
$ # match end of line
/mg # end of regex, match multi-line, global match
RegExr: http://regexr.com?2tpd0
答案 2 :(得分:2)
我在这个页面上偶然发现了几次,这是我在任何一个在我身后绊倒的人的解决方案:
像a =(\ d + \。?\ d * | \ d * \。?\ d +)这样的正则表达式匹配所有没有符号的小数,但包括像002.0这样的东西
过滤这些东西的正则表达式是b = [1-9 \。] +。*
所以一个解决方案是说它符合标准,如果& b匹配。或等效(相反),看看是否与!a |不匹配!湾不幸的是,大多数语言都没有完整的正则表达式包;通常不存在常规语言的'和'和否定函数。我在代码中找到的两个简单的正则表达式看起来比一个复杂的表达式更好,更易于维护(我在这个问题和类似情况的上下文中说这个)
答案 3 :(得分:1)
考虑正则表达式:
^[0-9]*(?:\.[0-9]*)?$
此正则表达式将匹配浮点数,如:
- .343
- 0.0
- 1.2
- 44
- 44.
- 445.55
- 56.
- . //Only dot(.) also matches
- empty string also matches
上述正则表达式将不接受:
- h32.55 //Since ^ is used. So, the match must start at the beginning
of the string or line.
- 23.64h //Since $ is used. So, the match must occur at the end of the string or before \n at the end of the line or string.
考虑正则表达式:
^[0-9]+(?:\.[0-9]+)?$
此正则表达式将匹配浮点数,如:
- 45
- 45.5
- 0.0
- 1.2
- 445.55
此正则表达式不接受:
- h32.55 //Since ^ is used. So, the match must start at the beginning
of the string or line.
- 23.64h //Since $ is used. So, the match must occur at the end of the string or before \n at the end of the line or string.
- 44.
- . //Only dot(.) does not matches here
- empty string also does not matches here
纯浮点数
^(([0-9]+(?:\.[0-9]+)?)|([0-9]*(?:\.[0-9]+)?))$