现在有一个,为exec()
方法的返回结果加上indices
属性,在这个属性上面可以拿到匹配的开始位置和结束位置。
上面例子中,exec()
方法的返回结果result
,它的index
属性是整个匹配结果(ab
)的开始位置,而它的indices
属性是一个数组,成员是每个匹配的开始位置和结束位置的数组。由于该例子的正则表达式没有组匹配,所以indices
数组只有一个成员,表示整个匹配的开始位置是,结束位置是3
。
注意,开始位置包含在匹配结果之中,但是结束位置不包含在匹配结果之中。比如,匹配结果为ab
,分别是原始字符串的第1位和第2位,那么结束位置就是第3位。
上面例子中,正则表达式包含一个组匹配,那么indices
属性数组就有两个成员,第一个成员是整个匹配结果(abbcd
)的开始位置和结束位置,第二个成员是组匹配(cd
)的开始位置和结束位置。
下面是多个组匹配的例子。
上面例子中,正则表达式包含两个组匹配,所以indices
属性数组就有三个成员。
上面例子中,方法返回结果的indices.groups
属性是一个对象,提供具名组匹配Z
的开始位置和结束位置。
如果获取组匹配不成功,indices
属性数组的对应成员则为undefined
,indices.groups
属性对象的对应成员也是undefined
。
上面例子中,由于组匹配不成功,所以indices
属性数组和indices.groups
属性对象对应的组匹配成员都是undefined
。