我想知道为什么这个正则表达式解决方案匹配,当它显然不应该。问题网站的链接是regexone.com。
^(-?)(\d+)(\.|,)?(\w+)\.?(\d+)$
Task Text
---------------------
Match 3.14529
Match -255.34
Match 128
Match 1.9e10
Match 123,340.00
Skip 720p
上面的正则表达式应该被接受。
答案 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不匹配或许多其他有效数字。因此,它不是数字的正则表达式,但它确实适用于那些测试用例。