JS RegExp捕获括号

时间:2014-11-22 16:57:44

标签: javascript regex

我是JS RegExp的新手。我对下面的RegExp比赛感到困惑。

var x = "red apple"

var y = x.match(/red|green/i)

现在y["red"]

但是,如果我在redgreen附近添加一对括号并使y成为

var y = x.match(/(red|green)/i)

现在,y将成为["red", "red"]。我在线搜索https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp 并发现它被称为 捕捉括号

它说For example, /(foo)/ matches and remembers 'foo' in "foo bar." The matched substring can be recalled from the resulting array's elements [1], ..., [n] or from the predefined RegExp object's properties $1, ..., $9.

但我不明白recalled from the resulting array's element or from predefined RegExp object's properties是什么意思?有人可以解释一下吗?谢谢!

3 个答案:

答案 0 :(得分:3)

这意味着可以通过引用特定的组号[1]来访问匹配结果(从{/ em> capturing group获得)[n]其中{ {1}}表示您要访问的捕获组的编号。

注意: n适用于整体匹配结果。

[0]

答案 1 :(得分:1)

当匹配结果存储到(在这种情况下)y时,y[0]始终是整体匹配,而y[1] .. {{1包含各个捕获组。

y[9],适用于/(red|green) apple/"This is a red apple."将为y

答案 2 :(得分:0)

使用此

var y = x.match(/(red|green)/gi);

答案是

y = ["red"]