如何确保正则表达式 URL 匹配与电子邮件不匹配?

问题描述 投票:0回答:1

我有一个用于匹配 URL 的正则表达式:

(?:\w+:\/{2})?(?:\w+:\w+@)?(?:\w+(?:\.|-\w+)*\.)+[a-zA-Z]{2,}(?::\d+)?(?:\/[^\s]*)?(?:\?\S*)?

这是细分:

(?:\w+:\/{2})?          http://
(?:\w+:\w+@)?       username:password@
(?:\w+(?:\.|-\w+)*\.)+    google.us.
[a-zA-Z]{2,}            .com, .org. co, io
(?::\d+)?                   :8080
(?:\/[^\s]*)?             /about/us
(?:\?\S*)?                 Query parmas ?utm_param=Facebook

但是,此正则表达式匹配“[email protected]”。如何确保电子邮件中不包含任何网址?我尝试过添加

(?<!@)

到正则表达式的开头,但没有运气。

regex url
1个回答
0
投票

您必须至少定义一些 URL 镶边(可能是协议,或者主机后面的尾部斜杠)作为强制要求,或者禁止 HTTP 用户名规范,以便停止将电子邮件地址与您的模式进行匹配。

© www.soinside.com 2019 - 2024. All rights reserved.