正则表达式匹配浮点数模式

时间:2013-09-11 13:20:02

标签: javascript regex

这是我希望与之匹配的模式。 我已经开始这样的事情^\d{1,}.^\d{1,}$不确定完成此事。

  • x
  • x.x
  • x不能为零(不允许0或0.00,但可以是1.02或0.123)
  • 所有x的长度(包括小数)(如果有)不应超过11位
  • 至少需要1 x
  • 仅允许1位小数
  • 这是必填字段

注意:我将x称为数字

我想在 HTML5 Pattern attribute和JavaScript string.match("")中使用 RegEx

清晰度:我的意思是" 1.02"是允许的,但" 0"或者" 0.0"不允许

2 个答案:

答案 0 :(得分:1)

这就是你需要的吗?

^(?!^0$)(?=.{1,11}$)(([1-9][0-9]*|0)(\.[0-9]*[1-9])?)$

答案 1 :(得分:1)

我认为正则表达式不是验证数字的好方法,但如果你想要......

r = /^(?=.*[1-9])(?=.{1,11}$)([1-9][0-9]*|0)(\.[0-9]+)?$/
"1 1.2 0.2 100.2 00.1 0.00 0 234890324908324908342".split(" ").forEach(function(x) {
    console.log(x, r.test(x)) })

1 true
1.2 true
0.2 true
100.2 true
00.1 false
0.00 false
0 false
234890324908324908342 false

这可能更准确 - 不接受尾随零,如123.45600

r = /^(?=.*[1-9])(?=.{1,11}$)([1-9][0-9]*|0)(\.[0-9]*[1-9])?$/