求一个正则表达式链接替换函数(100高分)

goldtogo 2009-07-08 09:47:51
求一个正则表达式链接替换函数(100高分)


1)

字符串 前面的字符<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>后面的字符

替换成 前面的字符任意长度字符后面的字符


函数的样式如下,帮忙写正则表达式,谢谢。


Function ScriptHtml(Byval ConStr,FType)
Dim Re
Set Re=new RegExp
Re.IgnoreCase =true
Re.Global=True
Select Case FType
Case 1
Re.Pattern="正则表达式"
ConStr=Re.Replace(ConStr,"")
Case 2
Re.Pattern="正则表达式"
ConStr=Re.Replace(ConStr,"")
Case other


End Select
ScriptHtml=ConStr
Set Re=Nothing
End Function


恳请大家帮忙,在此先谢了!
...全文
130 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
TkingCN 2009-07-10
顶起 学习
回复
gengzhw 2009-07-09
学习
回复
浪尖赏花 2009-07-09
看了下LZ的需求,如果我没理解错的话,这不需要用正则吧
直接replace字符串就可以了挖,
case 1:
str = str.replace("http://www.aaa.cn/000011.html","http://www.bbb.cn/folder/show.asp?id=000011");
break;
case 2:
str = str.replace("http://www.aaa.cn/070006,ccc.html","http://www.bbb.cn/folder/aa.asp?id=000011");
break;
case 3:
str = str.replace("<a href=\"http://www.aaa.cn/dddd.html\">","");
str = str.replace("</a>","");
break;
回复
monexus 2009-07-09
[Quote=引用 3 楼 goldtogo 的回复:]
高人;能不能把它写成一个函数啊; 那个字符串是个变量 content


我就是希望把那个变量的内容中的链接替换成自己的链接, 内容中的链接替换可能多余我说的那2个替换规则(可能有很多),希望这个函数能够灵活些,可以随意加正则,替换成自己想要的链接,多谢了!!

Function guolv(content)
ConStr=content

...........


guolv=ConStr
End Function
[/Quote]
你那是VB是写法,写不来
回复
支持3楼的
回复
goldtogo 2009-07-08
高人;能不能把它写成一个函数啊; 那个字符串是个变量 content


我就是希望把那个变量的内容中的链接替换成自己的链接, 内容中的链接替换可能多余我说的那2个替换规则(可能有很多),希望这个函数能够灵活些,可以随意加正则,替换成自己想要的链接,多谢了!!

Function guolv(content)
ConStr=content

...........


guolv=ConStr
End Function
回复
monexus 2009-07-08
<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>
回复
monexus 2009-07-08
http://www.aaa.cn/070006,ccc.html
URL有包含“,”号??
回复
相关推荐
发帖
JavaScript
创建于2007-09-28

8.5w+

社区成员

Web 开发 JavaScript
申请成为版主
帖子事件
创建了帖子
2009-07-08 09:47
社区公告
暂无公告