2

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

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

87

887.65

-87

-87.65

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

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

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

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

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

4

1 回答 1

1

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

于 2016-04-28T13:03:16.903 回答