我是JS RegExp的新手。我对下面的RegExp比赛感到困惑。
var x = "red apple"
var y = x.match(/red|green/i)
现在y
是["red"]
。
但是,如果我在red
和green
附近添加一对括号并使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
是什么意思?有人可以解释一下吗?谢谢!
答案 0 :(得分:3)
答案 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"]