JavaScript正則中的子表達式要用括號括起來。
說明
exec() 方法的功能非常強大,它是一個通用的方法,而且使用起來也比 test() 方法以及支持正則表達式的 String 對象的方法更爲複雜。
如果 exec() 找到了匹配的文本,則返回一個結果數組。否則,返回 null。此數組的第 0 個元素是與正則表達式(用括號括起來的
)匹配的文本,第 1 個元素是與 RegExpObject 的第 1 個子表達式相匹配的文本(如果有的話),第 2 個元素是與 RegExpObject 的第 2 個子表達式相匹配的文本(如果有的話),以此類推。 除了數組元素和 length 屬性之外,exec() 方法還返回兩個屬性。index 屬性聲明的是匹配文本的第一個字符的位置。input 屬性則存放的是被檢索的字符串 string。我們可以看得出,在調用非全局的 RegExp 對象的 exec() 方法時,返回的數組與調用方法 String.match() 返回的數組是相同的。
例如:
/\[[a-z]+ ([a-zA-Z]+)\]/.exec(Object.prototype.toString.call([])) || []
結果:
["[object Array]", “Array”, index: 0, input: “[object Array]”, groups: undefined]
再例如:
/\[([a-z]+) ([a-zA-Z]+)\]/.exec(Object.prototype.toString.call([])) || []
結果:
["[object Array]", “object”, “Array”, index: 0, input: “[object Array]”, groups: undefined]