正则从字符串中提取邮箱会把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"]
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
可以使用零宽度负回顾后发断言,
(?<!exp)
,断言此位置的前面不能匹配表达式exp
。比如你的需求,后面邮箱正则该怎么写怎么写,前面加上
(?<!ftp:\/\/)
即可。这个特性是 ES2018 后加入的。