有人能详细说明/将这个正则表达式翻译成英文吗?
谢谢。
var g = "123456".match(/(.)(.)/);
我注意到输出看起来像这样:
12,1,2
我知道dot表示除新行之外的任何字符。但这实际上是做什么的呢?
答案 0 :(得分:4)
一对括号(没有?作为第一个字符,表示其他行为)将内容捕获到一个组。
在您的示例中,数组中的第一项是整个匹配项,后续项是任何组匹配项
如果您的代码类似于以下内容可能会更清楚:
var g = "123456".match(/.(.).(.)./);
这将匹配五个字符,分别将第二个和第四个放入第1组和第2组,因此输出12345,2,4
如果您想要在不捕获内容的情况下进行纯分组,请使用(?:...)
语法,?:
部分表示非捕获组。 (有各种各样的团体事物,比如前瞻和其他fun stuff。)
如果清楚,或者进一步解释有帮助,请告诉我?
答案 1 :(得分:1)
它查找两个字符 - 由于点的任何字符 - 并“捕获”它们,以便您可以查找匹配的整个字符串,以及每个子字符串(捕获)。