我想用*(www,http,https bla.bla.com等)替换各种网址 我想要允许的只有一个案例,即“www.google.com,google.com或http://google.com等。”
我有这个,但不知道如何把它写到想要的值
var urlCheck = new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?");
有什么想法吗?
答案 0 :(得分:2)
只需将您不喜欢的内容作为替代品放在一起,并且不要捕捉它们。
var urlCheck = new RegExp("(?:w+\.)?google\.com|([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?");
^^^^^^^^^^^^^^^^^^^^ Match google, don't capture
结果:
< "hello bob www.numenware.com foo www.google.com bar".replace(urlCheck, "*")
> "hello bob * foo www.google.com bar"
?:
指定非捕获组。
了解更多here。
如果您希望单独处理例外,那么
var blacklist = /(\w+\.)?google\.com/;
string.replace(urlCheck, function(match) { return blacklist.test(match) ? match : "*"; });
这样做的好处是可以更轻松地管理和更新黑名单,而无需编辑主正则表达式。