实数的 ng-pattern 正则表达式

ng-pattern regular expression for real number

这个问题更多是出于我自己的好奇心。我有一个有效的解决方案,但我很好奇是否有人知道为什么一个解决方案有效而另一个无效。

我需要一个正则表达式来验证用户是否输入了有效号码。一些例子:

87

887.65

-87

-87.65

我的第一次尝试是这样的:

^(\-?[0-9]+(\.[0-9]*)?)$

除了接受“7x”、“1a”、“89p”等字符串外,效果很好。我的新解决方案如下,它似乎工作得很好:

^(\-?[0-9]+(\.[0-9]+)?)$

第二个(注意'+')稍微简洁一些,但我不明白为什么第一个接受字母而第二个不接受字母。有人看到我遗漏了什么吗?

“.”在你的正则表达式中是字符“。”从字面上看,所以它应该转义“\.”,否则它会匹配任何字符。在第二个正则表达式中,“+”运算符要求至少一位小数,因此它不会匹配“7x”,但它会匹配“7x1”,请参见 Regex demo