我需要一些只能匹配小数到两位数的正则表达式。例如
123 =不匹配
12.123 =不匹配
12.34 =匹配
答案 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})?$