我在RegEx中缺少什么?

时间:2010-07-27 14:31:12

标签: javascript regex numbers

我正在尝试创建一个JavaScript Regex来测试:

0到99.9之间的有效#(只允许一个十进制数) 例如3.45无效。

所以,空白是可以的,0到99之间的任何整数都可以,并且允许使用小数值。

到目前为止我有这个,但它允许3.45之类的值传递:

$^|$[0-9][0-9]?^|$[0-9][0-9]?.[0-9]^

5 个答案:

答案 0 :(得分:9)

我可以看到两个问题:

  • 你混淆了^和$。
  • 您的小数点需要转义\.

答案 1 :(得分:4)

Mark已经说过你的表达有什么问题。以下是另一种编写方式:

^(\d\d?(\.\d)?)?$

说明:

  • ^匹配字符串的开头
  • (...)?使整数可选
  • $匹配字符串的结尾
  • \d\d?匹配一位或两位数字(?使第二位数字可选)
  • (\.\d)?匹配点.和数字(?使其可选)

答案 2 :(得分:1)

我从未真正使用过多少JavaScript,但这应该可以胜任......

^[0-9][0-9]?(?:\.[0-9])?$

答案 3 :(得分:0)

将您的正则表达式重写为:

^$|^[0-9][0-9]?$|^[0-9][0-9]?\.[0-9]$

但更好的是,使用Felix King的那个。

答案 4 :(得分:0)

另一种变体是

/^\d{0,2}(\.\d)?$/

如果允许这样的话,它将接受像.3这样的数字。