正则表达式中的元字符和括号

时间:2010-06-21 23:30:20

标签: javascript regex

有人能详细说明/将这个正则表达式翻译成英文吗?

谢谢。

var g = "123456".match(/(.)(.)/);

我注意到输出看起来像这样:

12,1,2

我知道dot表示除新行之外的任何字符。但这实际上是做什么的呢?

2 个答案:

答案 0 :(得分:4)

一对括号(没有?作为第一个字符,表示其他行为)将内容捕获到一个组。

在您的示例中,数组中的第一项是整个匹配项,后续项是任何组匹配项

如果您的代码类似于以下内容可能会更清楚:

var g = "123456".match(/.(.).(.)./);

这将匹配五个字符,分别将第二个和第四个放入第1组和第2组,因此输出12345,2,4

如果您想要在不捕获内容的情况下进行纯分组,请使用(?:...)语法,?:部分表示非捕获组。 (有各种各样的团体事物,比如前瞻和其他fun stuff。)

如果清楚,或者进一步解释有帮助,请告诉我?

答案 1 :(得分:1)

它查找两个字符 - 由于点的任何字符 - 并“捕获”它们,以便您可以查找匹配的整个字符串,以及每个子字符串(捕获)。