RegEx替换除

时间:2016-01-03 04:20:36

标签: javascript regex

我想用*(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]+)?(/.*)?");

有什么想法吗?

1 个答案:

答案 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 : "*"; });

这样做的好处是可以更轻松地管理和更新黑名单,而无需编辑主正则表达式。