的用法.在javascript中的regex中

Usage of . in regex in javascript

本文关键字:regex 中的 javascript 用法      更新时间:2023-09-26

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

var reg = new RegExp('^(([0-9]+)|'.[0-9]+)$');

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

validatePercentage(56.67); --> not an integer
validatePercentage(67); --> integer
validatePercentage(-5667); --> should not be negative

但是,我无法理解'''的用法'(这似乎对输出产生了影响)。有人能解释一下正则表达式是如何消除负面输入的吗?提前谢谢。

  1. 正则表达式中的.表示"任何字符"
  2. 正则表达式中的'.表示"句点字符"
  3. JavaScript字符串文字中的CCD_ 3表示CCD_

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


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

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

var reg = /^[1-9][0-9]+(?:'.0+)?$/

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

value == parseInt(value, 10) && value > 0

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

要在图案中绘制文字点,必须转义该点,否则该点可能与换行符以外的任何字符匹配。

当您使用带有javascript字符串的对象表示法来定义模式时,必须转义反斜杠,以给出:

var reg = new RegExp('^(([0-9]+)|''.[0-9]+)$');

var reg = /^(([0-9]+)|'.[0-9]+)$/;

你也可以写:

var reg = new RegExp(/^(([0-9]+)|'.[0-9]+)$/);