这里写一下regexp的exec和string的match的混淆理清。
第一点是:exec和match都是返回一个数组。
第二点是:exec第一个元素是找到的那个匹配项。后面的元素都是小括号里的值。
比如:
/(a)/.exec('a'); //['a','a']
返回的数组第二个元素就是第一个小括号里的值。
第三点是:如果match没有g(全局)标识符。那么和exec是一样的。
比如:
'a'.match(/(a)/); //['a','a']
返回的数组第二个元素也是第一个小括号里的值。
第四点是:如果match有g标识符。那么返回的数组就是所有匹配项。
比如:
'bd'.match(/[db]/); //['b']
'bd'.match(/(d|b)/); //['b','b']
'bd'.match(/(d|b)/g);//['b','d']