正则表达式电子邮件模式以否定的方式

时间:2018-01-08 17:30:12

标签: javascript java regex regex-negation

我正在研究一些正则表达式

我有一个变量,

var url = "last_name=Ahuja&something@test.com";

网址包含emailId。我有一个正则表达式模式来检查变量是否包含emailId。

var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

我的要求是: 我想要完全否定(相反)上述模式。比如,如果网址包含电子邮件模式,我的条件应该是假的。 我的意思是正则表达式应该是这样的。

请有人帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

您可以测试它是否匹配,而不是否定正则表达式。

var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var url = "last_name=Ahuja&something@test.com";

if(-1 === url.search(filter))
{
    alert("Didn't find it");
}
else
{
    alert("Found it");
}

答案 1 :(得分:0)

使用否定预测,您可以检查字符串在开头是否没有电子邮件,这模仿了您的正则表达式具有开始和结束锚点所需的行为。

^(?!([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+).*$

但如果您想确保该行中的任何地方都没有有效的电子邮件,您可以稍微修改一下。

^((?!([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+).)*$

查看解释here

但你应该像Jonathan建议的那样在代码中这样做。