Javascript多电子邮件正则表达式验证
Posted
技术标签:
【中文标题】Javascript多电子邮件正则表达式验证【英文标题】:Javascript multiple email regexp validation 【发布时间】:2012-01-01 18:26:44 【问题描述】:简单电子邮件的通常验证是:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]2,4)$/
这将验证电子邮件,如test@test.com
但是如何验证电子邮件是否是多个?
entry 1: test@test.com, test1@test.com, test2@test.com
entry 2: test@test.com , test1@test.com , test2@test.com
entry 3: test@test.com, test1@test.com , test2@test.com
entry 4: test@test.com
此电子邮件是用户可能输入的条目。也期望他们有时是 2 或 3 或 4 封或更多电子邮件。
感谢您的回答。
【问题讨论】:
【参考方案1】:用逗号分隔电子邮件并验证条目
var x = getEmails();
var emails = x.split(",");
emails.forEach(function (email)
validate(email.trim());
);
getEmails() 在哪里从页面获取电子邮件,然后 validate 针对电子邮件运行您的正则表达式
【讨论】:
【参考方案2】:试试这个
function validateEmails(string)
var regex = /^([\w-\.]+@([\w-]+\.)+[\w-]2,4)?$/;
var result = string.replace(/\s/g, "").split(/,|;/);
for(var i = 0;i < result.length;i++)
if(!regex.test(result[i]))
return false;
return true;
接受逗号和分号作为分隔符
【讨论】:
【参考方案3】:这是一个无需拆分的多邮件验证的正则表达式
function validateMultipleEmails(string)
var regex = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-\.]+)+([;]([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-\.]+))*$/;
return regex.test(string);
https://regex101.com/r/TUXLED/1
【讨论】:
【参考方案4】:您应该能够用逗号分隔条目,然后根据正则表达式测试各个电子邮件子条目。
var valid = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]2,4)$/;
var entries = entry.split(",");
if(valid.test(entries[0]))... //or however your testing against the regex
您可能还想在测试任何已剥离的电子邮件子字符串之前修剪任何空白。
【讨论】:
【参考方案5】:试试这个jquery验证:
jQuery.validator.addMethod("multiemail", function (value, element)
if (this.optional(element))
return true;
var emails = value.split(','),
valid = true;
for (var i = 0, limit = emails.length; i < limit; i++)
value = emails[i];
valid = valid && jQuery.validator.methods.email.call(this, value, element);
return valid;
, "Invalid email format: please use a comma to separate multiple email addresses.");
【讨论】:
【参考方案6】:function validateEmail(emailAddress)
var emailPattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]2,))$/;
return emailPattern.test(emailAddress);
function validate()
$("#result").text("");
var email = $("#emailAddress").val();
if (validateEmail(email))
$("#result").text(email + " validation successful");
$("#result").css("color", "white");
else
$("#result").text(email + " validation failed");
$("#result").css("color", "red");
return false;
$("form").bind("submit", validate);
.divSection
text-align: center; padding: 8%;
.pSection
border: none; color: white; padding: 10px 100px; text-align: center; text-decoration: none; display: inline-block; font-size: 24px; margin: 3% 0%; border-radius: 6px; -webkit-transition-duration: 0.4s; transition-duration: 0.4s; font-family: Roboto-Regular,Helvetica,Arial,sans-serif; background-color: #4184f3; margin: auto;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="divSection">
<form action="dashboard/user/profile" method="POST">
<input id="emailAddress" placeholder="Enter Email" value="shubham20.yeole@gmail.com">
<input type='submit' value="check">
</form>
</div>
<div class="divSection" >
<p class="pSection" id='result'></p>
</div>
这是用于检查电子邮件是否包含多个 @ 字符的 javascript 代码
var count=0;
email = "shubham20.ye@ole@gmail.com";
alert(email);
for(i =0; i<email.length;i++)
if(email.charAt(i) == "@")
count++;
if(count>1)
alert("not ok")
else
alert("ok")
另一种方法是使用电子邮件的标准模式
var pattern= /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]2,))$/;
re.test(email);
【讨论】:
以上是关于Javascript多电子邮件正则表达式验证的主要内容,如果未能解决你的问题,请参考以下文章