87,997
社区成员




<textarea id="demo">
字符串 前面的字符 <a href="http://www.aaa.cn/000011.html">任意长度字符 </a>后面的字符
替换成 前面的字符 <a href="http://www.bbb.cn/folder/show.asp?id=000011">任意长度字符 </a>后面的字符
2)
字符串 前面的字符 <a href="http://www.aaa.cn/070006,ccc.html">任意长度字符 </a>后面的字符
替换成 前面的字符 <a href="http://www.bbb.cn/folder/aa.asp?id=000011">任意长度字符 </a>后面的字符
3) 不属于以上情况的,直接删除链接
字符串 前面的字符 <a href="http://www.aaa.cn/dddd.html">任意长度字符 </a>后面的字符
替换成 前面的字符任意长度字符后面的字符
函数的样式如下,帮忙写正则表达式,谢谢。
</textarea>
<script type="text/javascript">
var demo = document.getElementById('demo'),
m, text = demo.value, part = text.split(/<\/a>/gi),
linkPattern = /(<a[^>]+)href=(['"])([^>]+)\2([^>]*>)((?:(?:\r\n|\n)?.*)*)/i,
type = [
/^http:\/\/www\.aaa\.cn\/(\d+)\.html$/i,
/^http:\/\/www\.aaa\.cn\/(\d+),ccc\.html$/i
];
for (var i = 0; i < part.length; i++) {
part[i] = part[i].replace(linkPattern, function(m, $1, $2, $3, $4, $5){
switch (true) {
case !!(m = $3.match(type[0])):
$3 = 'http://www.bbb.cn/folder/show.asp?id=' + m[1]; break;
case !!(m = $3.match(type[1])):
$3 = 'http://www.bbb.cn/folder/aa.asp?id=' + m[1]; break;
default:
$3 = null; break;
}
return $3 ? $1 + $2 + $3 + $2 + $4 + $5 + '</a>' : $5;
});
}
alert(part.join(''));
</script>