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

时间:2015-11-19 01:09:02

标签: javascript regex

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

当我想要过滤东西时,我已多次看到过这种情况。有很多变化,但它通常始于(/然后的东西。最近我发现这是一个建议,以帮助解析一个字符串,并确保它只有数字。在Mozilla的js页面上的RegExp我找到了一些其他的运算符,但它几乎没有包括上述所有内容。

2 个答案:

答案 0 :(得分:6)

这是一个正则表达式。您粘贴的那个将匹配正/负整数,或匹配单词无穷大。简而言之,正则表达式是:

  

正则表达式(简称regex或regexp)是一种特殊文本   用于描述搜索模式的字符串。你可以想到常规   表达式作为类固醇的通配符。

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

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

您可以创建一个简单的表达式来匹配数字,例如:

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

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

这些表达式和你粘贴的表达式一样被解析并变成小机器(称为finite state machines)。机器的整个目的是确定字符串是否与机器表示的表达式匹配,或者它是否匹配。然后,您可以将一个字符串输入到这样的机器中,它会将答案吐回给您。

在上面的示例中,我们使用44方法将字符串asdasd/^[0-9]*$/提供给正则表达式test,并返回true,因为44false的表达式asdasd匹配,因为它不匹配。

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

^表示正则表达式必须从字符串

的非常开头开始匹配

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

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

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

答案 1 :(得分:3)

这是regular expression,可以匹配正/负自然数或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)$/);