js正则 - 匹配链接内的文字

2008-12-10 23:58:30 | 【

javaScript正则表达式获取连接文本。例如代码:<a href="#>文本内容</a>,只保存链接的文本内容,标签信息删掉。

前面写过一个匹配链接的正则:

 /<a\s(\s*\w*?=".+?")*(\s*href=".+?")(\s*\w*?=".+?")*\s*>[\s\S]*?<\/a>/ 


不过我们需要捕获的是文字内容,所以需要做一定的修改。第一步就是在所有的括号内都加上?:表示不捕获。第二步就是再多加一个括号放在[\s\S]*?两侧,这样就可以捕获到链接的文字内容了。最后正则如下:

 /<a\s(?:\s*\w*?\s*=\s*".+?")*(?:\s*href\s*=\s*".+?")(?:\s*\w*?\s*=\s*".+?")*\s*>([\s\S]*?)<\/a>/ 


测试代码如下:

<script type="text/javascript"> 
 function anchorText(str){ 
  var reg =/<a\s(?:\s*\w*?\s*=\s*".+?")*(?:\s*href\s*=\s*".+?")(?:\s*\w*?\s*=\s*".+?")*\s*> 
 
 ([\s\S]*?)<\/a>/; 
  str = str.replace(reg,'$1'); 
  return str; 
 } 
 var str = '<a id = "test" href="http://www.sharejs.com" title="sharejs">分享javaScript</a>'; 
 document.write(anchorText(str)); 
 </script> 

相关资源