我正在尝试更改字符串中某些regular expression匹配的网址的颜色。
这是我的代码:
$(document).ready(function(){
//Change the color of words containing the @ sing
$("#modal_0 section p").html(function(_, html){
return html.replace(/(\@\w+)/g, '<span class="change_color">$1</span>');
}); //Works fine
//Change the color of words containing URLs (www.domain.com, domain.com, etc.)
$("#modal_0 section p").html(function(_, html){
return html.replace(/^(?=www\.)?[A-Za-z0-9_-]+\.+[A-Za-z0-9.\/%&=\?_:;-]+$/, '<span class="change_color">$1</span>');
}); //Doesn't work
})
;
当我尝试捕捉包含@ sing的单词时,该功能正常工作。而且我没有看到正则表达式有任何问题。
以下是 the fiddle。
答案 0 :(得分:2)
删除这些锚点,添加一个捕获组,它将起作用:
/(?=www\.)?([A-Za-z0-9_-]+\.+[A-Za-z0-9.\/%&=\?_:;-]+)/
答案 1 :(得分:1)
你的正则表达式不合适,开头有^
而末尾有$
,这意味着它只匹配那些将域名作为唯一内容的p
somedomain.com
{1}}。
此外,您错过了添加捕获组。
//Change the color of words containing urls (www.domain.com,domain.com,etc)
$("#modal_0 section p").html(function(_, html){
return html.replace(/(?=www\.)?([A-Za-z0-9_-]+\.+[A-Za-z0-9.\/%&=\?_:;-]+)/, '<span class="change_color">$1</span>');
});
演示:Fiddle