日期:2014-05-16  浏览次数:20311 次

我这个正则如何改才能得到里面的名称?
<script>
function getoption(url){
var str="";
var reg=/<a href=".+?">(.+?)<\/a>/g;
str=url.match(reg);
for(i=0;i<str.length;i++){
alert(RegExp.$1); 
}
}
str='<a href="http://www.aspbc.com" target="_blank">网站1</a><a href="http://www.baidu.com" target="_blank">网站2</a><a href="http://www.sina.com.cn" target="_blank" title="新浪">网站3</a>';
getoption(str); //为什么我这里弹出了3次”网站3“
</script>

我想分别弹出“网站1”,"网站2",“网站3”,而这里这里为什么弹出了3次”网站3“?如何修改实现我想要的结果?
正则

------解决方案--------------------
试试

function getoption(url){
var str="";
var reg=/<a href=".+?">(.+?)<\/a>/g;
while(r = reg.exec(url)) {   
alert(r[1]); 
}
}
str='<a href="http://www.aspbc.com" target="_blank">网站1</a><a href="http://www.baidu.com" target="_blank">网站2</a><a 

href="http://www.sina.com.cn" target="_blank" title="新浪">网站3</a>';
getoption(str); //为什么我这里弹出了3次”网站3“

------解决方案--------------------
function getoption(url) {
var str = "";
var reg = /<a href=".+?">(.+?)<\/a>/g;
while (str = reg.exec(url)) {
alert(str[1]);
}
}
str = '<a href="http://www.aspbc.com" target="_blank">网站1</a><a href="http://www.baidu.com" target="_blank">网站2</a><a href="http://www.sina.com.cn" target="_blank" title="新浪">网站3</a>';
getoption(str);


应该这样吧
当使用match时,
一、加/g,会匹配所有的可能,并将匹配的第一个,成为数组元素,也就是2楼,wzs_xyz的方法,会显示三个<a>,这不是楼主要的。

二、 不加/g,只作一次匹配,返回str[0] 是一个a,str[1] 是第一个子匹配,即“网站1”

这两个,显然,都不能满足楼主,所以应使用exec这个方法。

wzs_xyz