javascript - 在 JavaScript 中验证电子邮件
问题描述
我不知道为什么正则表达式模式不起作用!我找不到任何错误!但是当我用错误的输入运行它时,它只会跳过模式测试行并移动到下一页!
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script>
function validate()
{
var email=document.myform.email.value;
var pass=document.myform.pass.value;
var phno=document.myform.phno.value;
if(email!="" && pass!="" && phno!="")
{
var emailcheck=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var passcheck=/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}/;
var phonecheck=/^[0-9]{10}+$/;
var result1=emailcheck.test(email);
var result2=passcheck.test(pass);
var result3=phonecheck.test(phno);
}
else
{
alert("Validation failed");
return false;
}
if(result1 && result2 && result3)
{
alert("Validation Successful");
//return true;
}
else
{
alert("Validation Failed");
document.write("email should be as (xxx@gmail.com)"+"<br/>"+"password should be as (pass123)"+"<br/>"+"phone should be as (98659-57575)"+"<br/>");
return false;
}
}
</script>
</head>
<body>
<form name="myform" action="number.php" onsubmit="return validate()">
Email:<input type="text" name="email"/><br/>
Password:<input type="text" name="pass"/> <br/>
Phone:<input type="text" name="phno"/> <br/>
<input type="submit" value="submit"/>
</form>
</body>
</html>
如果我提供与模式不匹配的任何输入,我预计警报验证会失败。
解决方案
您的代码存在导致脚本失败的正则表达式错误。由于validate
脚本失败,onsubmit
找不到validate
函数,所以一切都会毁了。使用像这样
的在线正则表达式测试站点检查您的正则表达式是一种很好的行为,
我认为如果您将代码的正则表达式部分更改为此,每件事都会正常工作:
var emailcheck=/^([A-Za-z0-9_\\-\\.])+\\@([A-Za-z0-9_\\-\\.])+\\.([A-Za-z]{2,4})$/;
var passcheck=/(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}/;
var phonecheck=/^[0-9]{10}$/;
你会注意到我已经改变了每一个/
with //
,并且+
在最后一个正则表达式中也被删除了,因为它是无效的。
我希望它有所帮助。
推荐阅读
- azure - 使用 istio 虚拟服务暴露 3 条路由
- azure-data-factory - ADF - 如何从引用文件名部分的 Excel 工作表中复制数据
- mysql - 添加对现有实体的属性的多选下拉列表的支持
- python - 计算具有相似数据的行
- java - 在linux中使用java将RTF转换为PDF格式
- java - IPFS 不适用于 Java GET - 如何使用 POST 来代替?
- javascript - 使用 moment.js 和 moment-business-days 计算考虑公共假期和周末的日期
- for-loop - 如何在for循环中修复一张图像上的所有图?
- c# - 该进程因未处理的异常而终止 - ArgumentOutOfRangeException
- apache - 使用 .htaccess 将 http 重定向到 https - 使用 let-proxy 导致 ERR_TOO_MANY_REDIRECTS