Javascript 实数的ng模式正则表达式

Javascript 实数的ng模式正则表达式,javascript,angularjs,regex,ng-pattern,Javascript,Angularjs,Regex,Ng Pattern,这更多的是出于我自己的好奇心。我有一个有效的解决方案,但我很好奇是否有人能洞察为什么一个解决方案有效,而另一个不有效 我需要一个正则表达式来验证用户是否输入了有效的数字。一些例子: 87 887.65 -87 -87.65 我的第一次尝试是这样的: ^(\-?[0-9]+(\.[0-9]*)?)$ 它工作得很好,除了像“7x”、“1a”、“89p”这样的字符串被接受。我的新解决方案如下所示,看起来效果不错: ^(\-?[0-9]+(\.[0-9]+)?)$ 第二个(注意“+”)稍微简洁一些,

这更多的是出于我自己的好奇心。我有一个有效的解决方案,但我很好奇是否有人能洞察为什么一个解决方案有效,而另一个不有效

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

87

887.65

-87

-87.65

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

^(\-?[0-9]+(\.[0-9]*)?)$
它工作得很好,除了像“7x”、“1a”、“89p”这样的字符串被接受。我的新解决方案如下所示,看起来效果不错:

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

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

正则表达式中的“.”是字符“.”字面意思,因此应该转义“\”,否则它将匹配任何字符。在第二个正则表达式中,“+”运算符要求至少有一个小数点,因此它不匹配“7x”,但它将匹配“7x1”,请参见此

抱歉,此处存在复制/粘贴错误。在我的代码中,我避开了第一个破折号和圆点,但是StackOverflow似乎出于某种原因将它们去掉了。然而,不知何故,该点没有正确转义,您是正确的,它与“7x1”匹配。困惑。好的,只需要两次逃逸斜线,因为,角度。谢谢@lbarrosGlad我可以帮忙:)