用法\.在JavaScript中的正则表达式

Awa*_*ani 1 javascript regex

我有以下正则表达式,它执行非常基本的验证,只允许整数,不应允许任何浮点数和负数.我发现以下表达式是这样做的方法之一:

var reg = new RegExp('^(([0-9]+)|\.[0-9]+)$');
Run Code Online (Sandbox Code Playgroud)

此表达式正确验证以下输入:

validatePercentage(56.67); --> not an integer
validatePercentage(67); --> integer
validatePercentage(-5667); --> should not be negative
Run Code Online (Sandbox Code Playgroud)

但是,我无法理解' \的用法.'在表达式中(某种程度上似乎对输出产生了影响).有人可以解释一下正则表达式是如何消除负面输入的?提前致谢.

Que*_*tin 9

  1. . 正则表达式中的意思是"任何字符"
  2. \. 在正则表达式中的意思是"一个时期字符"
  3. \.在JavaScript字符串文字意味着..

这段代码是尝试使用2,但由于正则表达式是使用字符串构造的(几乎总是一个错误),它最终会被转换为1.


正则表达式似乎是"零或正整数或小于1的正浮点数"的尝试,但被字符串阶段破坏为"零或正整数,其中任何一个字符都可以在任何字符之前".

正确的正则表达式可能更像是:

var reg = /^[1-9][0-9]+(?:\.0+)?$/
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一个正整数的测试,那么你可能会更好:

value == parseInt(value, 10) && value > 0
Run Code Online (Sandbox Code Playgroud)

(如果要允许0作为值,则为> -1).