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
答案 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)