Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Javascript识别电子邮件地址?_Javascript_Html_Regex - Fatal编程技术网

如何让Javascript识别电子邮件地址?

如何让Javascript识别电子邮件地址?,javascript,html,regex,Javascript,Html,Regex,我试图给文本字段赋予双重功能。因此,如果您在其中键入12345,它会找到相关数据。但是如果你键入一个电子邮件地址,或者基本上是带有XXX@XXX.XXX格式,我希望出现密码字段和按钮。我一直在尝试使用regex,但由于某些原因,它不起作用,而且所有内容都被识别为电子邮件,因此即使是12345也会打开登录内容。你能帮助我吗?我试着把要点写进片段中 函数imgMain(){ var iDCode=document.getElementById(“IDQuery”).value; var mail=

我试图给文本字段赋予双重功能。因此,如果您在其中键入12345,它会找到相关数据。但是如果你键入一个电子邮件地址,或者基本上是带有XXX@XXX.XXX格式,我希望出现密码字段和按钮。我一直在尝试使用regex,但由于某些原因,它不起作用,而且所有内容都被识别为电子邮件,因此即使是12345也会打开登录内容。你能帮助我吗?我试着把要点写进片段中

函数imgMain(){
var iDCode=document.getElementById(“IDQuery”).value;
var mail=/^[a-zA-Z0-9.!$%&'*+/=?^`{124}-]+[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])(?:\[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])*$/;
如果(iDCode=mail){
log(“这是一封邮件”);
document.getElementById(“passwordDiv”).style.display=“block”;
document.getElementById(“loginbuttonDiv”).style.display=“block”;
document.getElementById(“见幻灯片”).style.display=“无”;
}否则{
log(“这不是邮件”)
}
}


日志索引
Se幻灯片




用户mail.test()使用适当的正则表达式,如下所示

let mail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if(mail.test(iDCode)){
      alert("Valid email is required")
    }

你可以试试这个版本,它基于

函数imgMain(){
var iDCode=document.getElementById(“IDQuery”).value;
var mailformat=/^\w+([\.-]?\w+*@\w+([\.-]?\w+*(\.\w{2,3})+$/;
if(iDCode.match(mailformat)){
log(“这是一封邮件”);
document.getElementById(“passwordDiv”).style.display=“block”;
document.getElementById(“loginbuttonDiv”).style.display=“block”;
document.getElementById(“见幻灯片”).style.display=“无”;
}否则{
log(“这不是邮件”)
}
}


日志索引
Se幻灯片





您可以尝试使用.validate函数。它非常适合检查登录表单。 该函数可能如下所示:

$("#IDQuery").validate({
    rules: {
        email:
            {required: true, email: true},
        password:
            {required: true}
        },
    messages: {
        email:
        {required: 'Please enter a E-mail',
        email: 'Please enter a valid E-mail'},
        password:{required: 'Please enter a password'}
    },
    errorPlacement: function (error, element) {
        error.insertAfter(element.parent());
    }
});

if
语句中,您有
if(iDCode=mail)

mail
的值重新分配给变量
iDCode
。因此,
if
实际上变成了
if(mail)
,这总是正确的,因为RegEx对象是真实的


相反,您应该使用
mail.test(iDCode)
iDCode.match(mail)
几种不同的方法检查输入是否与正则表达式匹配。您可以向该地址发送一封电子邮件,检查它是否会反弹,或者您可以使用PHP(我怀疑您是否希望这样做,因为您的问题是JavaScript)发送一封电子邮件,然后让他们在web地址上确认。老实说,PHP是实现这一点的最佳方法,但由于您使用的是JS,您可以从以下方面进行尝试:

这是因为我们正在检查电子邮件地址中的所有无效字符。如果输入字段包含这些字符中的任何一个,则其无效

试着用谷歌搜索答案。有很多信息:

为什么您希望
RegExp
对象的计算结果等于字符串?你读过吗?(您在条件语句中还使用了,而不是,这可以解释为什么比较结果总是
true
)您需要编写
if(mail.test(iDCode))
function ValidateEmail(mail) {
 if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myForm.emailAddr.value)) {
    return (true)
 }
 alert("You have entered an invalid email address!")
 return (false)
}