求一个正则表达式链接替换函数(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


恳请大家帮忙,在此先谢了!
...全文
166 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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是写法,写不来
超维电脑科技 2009-07-09
  • 打赏
  • 举报
回复
支持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有包含“,”号??

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧