0

这是我想要匹配的模式。我已经开始了这样的事情,^\d{1,}.^\d{1,}$但不确定能否完成。

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

注意:我将 x 称为数字

我想在HTML5和 JavaScript中都使用这个RegEx Pattern attributestring.match("")

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

4

2 回答 2

1

那是你需要的吗?

^(?!^0$)(?=.{1,11}$)(([1-9][0-9]*|0)(\.[0-9]*[1-9])?)$
于 2013-09-11T13:23:38.443 回答
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])?$/
于 2013-09-11T13:39:51.563 回答