我正在研究一些正则表达式
我有一个变量,
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})+$/;
我的要求是: 我想要完全否定(相反)上述模式。比如,如果网址包含电子邮件模式,我的条件应该是假的。 我的意思是正则表达式应该是这样的。
请有人帮我解决这个问题。
答案 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建议的那样在代码中这样做。