正则从字符串中提取邮箱会把ftp地址误认为邮箱:
var string = "ftp://myname@host.dom/%2Fetc/motd...多字符串...admin123@qq.com";
var regex2 = /[\d\w]+\b@[a-zA-ZA-z0-9]+\.[a-z]+/g;
console.log(string.match(regex2))
//结果:["myname@host.dom", "admin123@qq.com"]
正则从字符串中提取邮箱会把ftp地址误认为邮箱:
var string = "ftp://myname@host.dom/%2Fetc/motd...多字符串...admin123@qq.com";
var regex2 = /[\d\w]+\b@[a-zA-ZA-z0-9]+\.[a-z]+/g;
console.log(string.match(regex2))
//结果:["myname@host.dom", "admin123@qq.com"]
13 回答12.8k 阅读
8 回答2.5k 阅读
2 回答5k 阅读✓ 已解决
7 回答1.9k 阅读
9 回答1.6k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
5 回答819 阅读
可以使用零宽度负回顾后发断言,
(?<!exp)
,断言此位置的前面不能匹配表达式exp
。比如你的需求,后面邮箱正则该怎么写怎么写,前面加上
(?<!ftp:\/\/)
即可。这个特性是 ES2018 后加入的。