这对我自己的好奇心来说更像一个问题。我有一个有效的解决方案,但是我很好奇是否有人能够了解为什么一个解决方案有效,而另一个解决方案没有。
我需要一个正则表达式来验证用户是否输入了有效数字。一些例子:
87
887.65
-87
-87.65
我的第一次尝试看起来像这样:
^(\-?[0-9]+(\.[0-9]*)?)$
除了'7x','1a','89p'这样的字符串被接受之外,它的效果很好。我的新解决方案如下,它似乎工作正常:
^(\-?[0-9]+(\.[0-9]+)?)$
第二个(注意'+')稍微简洁,但我不明白为什么第一个接受字母而第二个不接受。有人看到我错过的东西吗?
答案 0 :(得分:1)
"。"在你的正则表达式中是为了角色"。"从字面上看,它应该被转义" \。",否则它将匹配任何字符。在第二个正则表达式中," +"运算符要求至少一个小数,因此它不匹配" 7x",但它将匹配" 7x1",请参阅此Regex demo