为什么这个正则表达式通过了?

时间:2015-08-05 00:58:22

标签: javascript regex

我想知道为什么这个正则表达式解决方案匹配,当它显然不应该。问题网站的链接是regexone.com

^(-?)(\d+)(\.|,)?(\w+)\.?(\d+)$

Task   Text
---------------------
Match  3.14529 
Match  -255.34 
Match  128 
Match  1.9e10  
Match  123,340.00  
Skip   720p

上面的正则表达式应该被接受。

1 个答案:

答案 0 :(得分:3)

让我们评估这个正则表达式。

                                             ^(-?)(\d+)(\.|,)?(\w+)\.?(\d+)$
                                             |---||---||-----||---||-||----|
           may or may not start with a hyphen__|    |     |     |   |    |
         then must contain one or more digits_______|     |     |   |    |
then may or may not contain a period or comma_____________|     |   |    |
then must contain one or more word characters___________________|   |    |
         then may or may not contain a period_______________________|    |
          then must end in one or more digits____________________________|

组中唯一与测试字符串不匹配的测试字符串是720p。有趣的是要注意,1不匹配,0.0不匹配或许多其他有效数字。因此,它不是数字的正则表达式,但它确实适用于那些测试用例。