如何使用Javascript(没有JQuery)进行电子邮件地址验证?
我正在尝试对输入文本字段进行电子邮件地址验证,但是,只有在条目不为null且包含@char时,它才必须提交 示例1是有效的,但是它不需要@char如何使用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不起作用,但我认为它是这样写
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
因为我使用了字符串来代替元素。当我得到这个元素时,我只是写了自己的评论,非常感谢,你教会了我很多东西!:)