我的字符串就像'facebook.com somenickname google.com example.com'。我的意思是有一个字符串可以包含多个网址和我的域名 - example.com。我想从该字符串中删除除“example.com”之外的所有URL,因此输出将类似于“somenickname example.com”
我尝试使用以下正则表达式,但不知道如何排除我的域名。
string.replace(/(https?:\/\/)?(www.)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}\/?/i, '').trim()
感谢您的帮助!
答案 0 :(得分:2)
您可以为此任务使用带有字边界的否定前瞻。
var re = /\b(?!example\.com)(https?:\/\/)?(www.)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}\/?\b/g;
var str = 'facebook.com somenickname google.com example.com';
console.log(str.replace(re, '')); // replace matches
console.log(str.replace(re, '').replace(/\s+/g, ' ')); // also replace space chars

(?!example\.com)
。断言下面的正则表达式不匹配
example
字面匹配字符example
(区分大小写)\.
字面匹配字符.
(区分大小写)com
字面匹配字符com
(区分大小写)