RegEx需要匹配数字到2位小数

时间:2011-01-14 12:24:53

标签: regex

我需要一些只能匹配小数到两位数的正则表达式。例如

123 =不匹配

12.123 =不匹配

12.34 =匹配

4 个答案:

答案 0 :(得分:21)

^[0-9]*\.[0-9]{2}$ or ^[0-9]*\.[0-9][0-9]$

答案 1 :(得分:7)

如果你正在寻找整场比赛,我会选择Paul的答案。

如果您希望匹配一个数字,请尝试:\d+\.\d\d(?!\d)

  • \d+一位数字(与[0-9]相同)
  • \.匹配句点字符
  • \d\d匹配小数点后两位
  • (?!\d)是一个负向前瞻,确保下一个字符不是数字。

答案 2 :(得分:3)

这取决于什么不应该匹配,什么应该和在什么情况下

例如,您测试的文本是否只包含该数字?在这种情况下,你可以这样做:

/^[0-9]+\.[0-9]{2}$/

但是这将测试整个字符串,因此如果匹配应该作为更大整体

的一部分进行,则会失败

如果它需要在更长的样式内,你可以做

/[0-9]+\.[0-9]{2}[^0-9]/

但如果字符串只是数字,则会失败(因为它需要一个非数字来跟随数字)

如果您需要能够涵盖这两种情况,可以使用以下内容:

/^[0-9]+\.[0-9]{2}$|[0-9]+\.[0-9]{2}[^0-9]/

答案 3 :(得分:0)

您也可以尝试正则表达式

^\d+(\.\d{1,2})?$

or
var regexp = /^\d+\.\d{0,2}$/;

// returns true
regexp.test('10.5')

or
[0-9]{2}.[0-9]{2}

or
^[0-9]\d{0,9}(\.\d{1,3})?%?$

or
^\d{1,3}(\.\d{0,2})?$