var str = 'a1ba2b';
var reg = /a(.+?)b/g;
while( true )
{
var match = reg.exec(str);
if(match)
alert(match[1]);
else
break;
}关于设置g后为什么这样,说明是这样的:
如果没有设置全局标志 (g),数组的0元素包含整个匹配,而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志,元素0到n中包含所有匹配。
var reg = /a(.+?)b/g;
while( true )
{
var match = reg.exec(str);
if(match)
alert(match[1]);
else
break;
}关于设置g后为什么这样,说明是这样的:
如果没有设置全局标志 (g),数组的0元素包含整个匹配,而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志,元素0到n中包含所有匹配。
var re = new RegExp("a(.+?)b","g"); //这里的全局标志 'g' 一定要设的 否则 while循环成死循环了 而且结果永远是第一个匹配的 1
var s = "a1ba2b";
while (a=re.exec(s))
{
alert(a[1]);
}