正则表达式没有正确匹配数字

时间:2016-07-05 14:00:52

标签: javascript regex

new RegExp('^\\d+[.]?([0,2,5,7]?[0,5])?$').test(236.70)

为什么这段代码不适用于123.20和123.70?而它成功地测试了以下输入:

  

123.00,123.05,123.25,123.50,123.55,123.75

2 个答案:

答案 0 :(得分:3)

您正在传递值236.70,并且很可能JavaScript正在剥离自0以来的最后一个236.70 == 236.7。然后,它与正则表达式的最后一部分不匹配,在那里您匹配[0,5]结尾。

相反,将其强制转换为字符串以强制尾随0保留在那里。

答案 1 :(得分:3)

正则表达式存在一些语法错误。在与小数匹配的部分中,当括号(可能)位于括号内时,?位于括号内,即使您没有尝试匹配,也会在字符类中有,个它们。

字符类([])要求您列出要匹配的个别字符。您还可以使用-(例如[0-9])获取范围字符。

new RegExp('^\\d+[.]?([0257]?[05]?)$').test(236.70)