繁体   English   中英

有人可以解释/ ^(\\-| \\ +)?([0-9] + | Infinity)$ /​​是什么吗?

[英]Can someone explain what /^(\-|\+)?([0-9]+|Infinity)$/ is?

/^(\-|\+)?([0-9]+|Infinity)$/

当我想要过滤事物时,我已经多次看到这种情况。 有很多变体,但通常总是以(/开头。最近,我发现这是一个建议,以帮助解析字符串并确保其中仅包含数字。在Regexp的Mozilla js页面上,我发现了其他一些运算符,但是几乎不包含上述所有内容。

这是一个正则表达式。 您粘贴的数字将匹配正/负整数,或者匹配单词infinity。 简而言之,正则表达式为:

正则表达式(简称regex或regexp)是用于描述搜索模式的特殊文本字符串。 您可以将正则表达式视为类固醇上的通配符。

http://www.regular-expressions.info/

您经常会看到正则表达式写为/expression_here/因为在许多编程语言中,这些斜杠是开发人员构建正则表达式对象的捷径。

您可以创建一个简单的表达式来将数字与以下内容匹配:

/^[0-9]*$/.test('44') // returns true

/^[0-9]*$/.test('asdasd') // returns false

像这样的表达式以及像您粘贴的那样的表达式将被解析并变成小型机器(称为有限状态机 )。 机器的整个目的是确定字符串是否与机器表示的表达式匹配,或者是否与字符串匹配。 然后,您可以将字符串输入到这样的机器中,它将向您吐出答案。

在上面的示例中,我们使用test方法将字符串44asdasd馈入到正则表达式/^[0-9]*$/ ,由于44与表达式匹配,因此返回true因为asdasd与表达式不匹配,因此返回false

我们还可以分解您包含在帖子中的正则表达式:

^表示正则表达式必须从字符串的非常开头开始匹配

(\\-|\\+)表示从字符串的开头开始,并且匹配-+ ,问号表示此部分是可选的

[0-9]+|Infinity表示“匹配一个或多个0到9之间的数字”,或( | )匹配文本Infinity

$表示“然后要求字符串在此处结束”

这是一个匹配正/负自然数或Infinity则表达式

/^(\-|\+)?([0-9]+|Infinity)$/

^(\\-|\\+) -将字符串的开头与-+文字字符匹配。

? -前面的表达式是- / +字符,是可选的。 换句话说,表达式可以匹配0或1次。

([0-9]+|Infinity)$ -字符串的末尾应为1个或多个数字或字符串Infinity

// Matches:
'-100'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
'+100'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
'Infinity'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
// Does NOT match:
'5%'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
'20/1'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
'NaN'.match(/^(\-|\+)?([0-9]+|Infinity)$/);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM