JS正则表达式,替换字符时忽略URL中的字符

rtsp 2012-08-06 05:55:17
var text = "<a href='http://www.baidu.com'>http://www.baidu.com</a>";
var keyword = "www";

输出
<a href='http://www.baidu.com'>http://<b>www</b>.baidu.com</a>

请问这个正则表达式要怎么写?
...全文
329 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rtsp 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

JScript code
var text = "<a href='http://www.baidu.com'>http://www.baidu.com</a>afefeeaaa<A href='http://www.code-design.cn'>http://www.code-design.cn</a>";
var keyword = "www";
var rx =……
[/Quote]
我这个替换主要是用来做高亮关键字显示的,对于下列这种有办法处理没?

var text = "wwwwww <a href='http://www.baidu.com'>http://www.baidu.com</a>afefeeaaa<A href='http://www.code-design.cn'>http://www.code-design.cn</a> wwwwwwwwwwwwwwwww";

  • 打赏
  • 举报
回复
    var text = "<a href='http://www.baidu.com'>http://www.baidu.com</a>afefeeaaa<A href='http://www.code-design.cn'>http://www.code-design.cn</a>";
var keyword = "www";
var rx = /(<a[^>]+>)([^>]+)(<\/a>)/ig
text = text.replace(rx, function ($0, $1, $2, $3) { return $1 + $2.replace(keyword, '<b>' + keyword + '</b>') + $3; });
alert(text)
rtsp 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

JScript code
var text = "<a href='http://www.baidu.com'>http://www.baidu.com</a>";
var keyword = "www";
var regexp = new RegExp((
'(<a.*?>\\s*)'
+ '(https?://\\s*)' //开头的http://或https:/……
[/Quote]
这个会把</a>去掉。。
rtsp 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

<script type="text/javascript">
var text = "<a href='http://www.baidu.com'>http://www.baidu.com</a>";
var keyword = "www";
var pattern = new RegExp('^(<[^>]+>[^……
[/Quote]
不能用
rtsp 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

text.replace(new RegExp(keyword, g), function($0, $1){
return '<b>' + $1 + '</b>';
});

下面的正确:
text.replace(new RegExp(keyword, 'g'), function($0, $1){
return '<b>' + $0 + '……
[/Quote]
不能用,一样会把url中的给替换了
bugknightyyp 2012-08-07
  • 打赏
  • 举报
回复
我测试了,3、4楼的可以输出你想要的结果
  • 打赏
  • 举报
回复
var text = "<a href='http://www.baidu.com'>http://www.baidu.com</a>";
var keyword = "www";
var regexp = new RegExp((
'(<a.*?>\\s*)'
+ '(https?://\\s*)' //开头的http://或https://
+ '(\\w+)' //主机名
+ '(.\\w+)+' //域名
+ '(\\s*</a>)'
), 'gi');

console.log(text.replace(regexp, '$1$2<b>$3</b>$4'));
  • 打赏
  • 举报
回复
<script type="text/javascript">
var text = "<a href='http://www.baidu.com'>http://www.baidu.com</a>";
var keyword = "www";
var pattern = new RegExp('^(<[^>]+>[^<]*)(' + keyword + ')([^<]*<[^>]*>)$');
text = text.replace(pattern, "$1<b>$2</b>$3");
alert(text);
</script>
shiulin 2012-08-06
  • 打赏
  • 举报
回复
text.replace(new RegExp('(<a[^>].*>.*)('+keyword+')(.*</a>)'),'$1<b>$2</b>$3')
nelson 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

text.replace(new RegExp(keyword, g), function($0, $1){
return '<b>' + $1 + '</b>';
});
[/Quote]
下面的正确:
text.replace(new RegExp(keyword, 'g'), function($0, $1){
return '<b>' + $0 + '</b>';
});
nelson 2012-08-06
  • 打赏
  • 举报
回复
text.replace(new RegExp(keyword, g), function($0, $1){
return '<b>' + $1 + '</b>';
});

87,996

社区成员

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

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