Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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(没有JQuery)进行电子邮件地址验证?_Javascript_Validation_Email - Fatal编程技术网

如何使用Javascript(没有JQuery)进行电子邮件地址验证?

如何使用Javascript(没有JQuery)进行电子邮件地址验证?,javascript,validation,email,Javascript,Validation,Email,我正在尝试对输入文本字段进行电子邮件地址验证,但是,只有在条目不为null且包含@char时,它才必须提交 示例1是有效的,但是它不需要@char function emailvalidation() { var x=document.forms["input"]["email"].value; if (x==null || x=="") { alert("Input email address, please!"); return false } 示例2不起作用,但我认为它是这样写

我正在尝试对输入文本字段进行电子邮件地址验证,但是,只有在条目不为null且包含@char时,它才必须提交

示例1是有效的,但是它不需要@char

function emailvalidation() {
var x=document.forms["input"]["email"].value;

if (x==null || x=="") {
    alert("Input email address, please!");
return false
}
示例2不起作用,但我认为它是这样写的

    function emailvalidation() {
var x=document.forms["input"]["email"].value;
var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

if (x<>null || x<>"" && x.value.match(email)) {
    alert("Input email address, please!");
return true
} else {
    alert("Input email address, please!");
return false
}
}
函数emailvalidation(){
var x=document.forms[“input”][“email”].value;
var email=/^\w+([\.-]?\w+*@\w+([\.-]?\w+*(\.\w{2,3})+$/;
if(xnull | | x“&&x.value.match(电子邮件)){
警报(“请输入电子邮件地址!”);
返回真值
}否则{
警报(“请输入电子邮件地址!”);
返回错误
}
}

有人有什么想法吗?不过谢谢你,最好不要JQuery!谢谢

您的解决方案中有几个逻辑问题。
首先,条件是x不为空x不是空字符串x与模式匹配。
其次,
是javascript的错误比较器;使用
=
==
第三,正如x所指出的,已经是元素的值,因此
x.value.match()
可能会导致问题

function emailvalidation() {
  var x = document.forms["input"]["email"].value;
  var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

  if (x !== null && x !== "" && x.match(email)) {
    return true;
  } else {
    alert("Input email address, please!");
    return false;
  }
}

谢谢大家!答案是所有答案的混合!不过,这是最终的解决方案!需要一个新的注册表表达式和==

谢谢大家,作为一个JS初学者,我非常感激

function emailvalidation() {

var x=document.forms["input"]["email"].value;
var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

if (x !== null && x !== "" && x.match(email)) {
return true
} else {
    alert("Input email address, please!");
return false
}
}

根据您的第一个脚本和需求,一个解决方案不带正则表达式,另一个解决方案带正则表达式

请注意,文本输入字段仅返回字符串。 电子邮件地址必须在
@
之前有一些内容,因此我们检查
@
是否出现在第一个字符之后(使用
indexOf
我们不需要正则表达式)。另外,如果我们找到了
@
,这意味着字符串不是空的
如果
@
与最后一个
@
位于同一位置,并且该位置小于字符串的总长度,则会给出一个
true
false
值,我们可以立即
返回该值
如果这三个条件都不满足,则我们发出错误消息<代码>警报
返回
未定义的
(在javascript中它本身强制为
,但是)我们使用double not
强制为布尔值
返回该值

第二个示例遵循相同的逻辑,但使用正则表达式

函数emailvalidation(){//不带正则表达式
var s=document.forms.input.email.value
,x=s.indexOf('@');

返回(x>0&&x==(x=s.lastIndexOf('@'))&&x另一封电子邮件验证

function isValidEmailAddress(emailAddress) {
            var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
            return pattern.test(emailAddress);
        };

什么是“不工作”的意思?你会得到误报吗?你可以使用正则表达式验证有效的电子邮件。你可以引用这个[post][1][1]:如果你只想要
@
符号,为什么不使用
x.indexOf('@')!=-1
?你的第二个函数应该是
x.match(email)
,而不是
x.value.match(email)
因为
x
已经是
值了。当你说它不起作用时,你有没有第二个例子失败的例子?你有没有试过用
替换
!=
?在这方面起作用。你会想把|也改成一个&&我不得不从
x.value.match()中删除
.value
因为我使用了字符串来代替元素。当我得到这个元素时,我只是写了自己的评论,非常感谢,你教会了我很多东西!:)