Javascript 多电子邮件正则表达式验证
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8191764/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Javascript multiple email regexp validation
提问by Jorge
Normally validation of simple email is:
通常对简单电子邮件的验证是:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
This will validate email like [email protected]
这将验证电子邮件,如 [email protected]
But how to validate if email is multiple?
但是如何验证电子邮件是否是多个?
entry 1: [email protected], [email protected], [email protected]
entry 2: [email protected] , [email protected] , [email protected]
entry 3: [email protected], [email protected] , [email protected]
entry 4: [email protected]
This emails is a possible entries that user will input. Also expect thier is 2 or 3 or 4 or more emails sometimes.
该电子邮件是用户将输入的可能条目。有时还希望收到 2 封或 3 封或 4 封或更多电子邮件。
Thanks for the answers.
感谢您的回答。
回答by Jim Deville
Split the emails on a comma and validate the entries
用逗号分割电子邮件并验证条目
var x = getEmails();
var emails = x.split(",");
emails.forEach(function (email) {
validate(email.trim());
});
Where getEmails() gets the emails from the page, and validate runs your regex against the emails
getEmails() 从页面获取电子邮件的地方,并验证针对电子邮件运行您的正则表达式
回答by alamnaryab
try this
试试这个
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;
}
accept both comma and semicolon as separator
接受逗号和分号作为分隔符
回答by Ahmet ?a?r? Akca
Here is a regex for multiple mail validation without split
这是一个用于多邮件验证的正则表达式,无需拆分
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);
}
回答by Chase
You should be able to split the entry by commas, and then test the individual email subentries against the regexp.
您应该能够用逗号分隔条目,然后针对正则表达式测试各个电子邮件子条目。
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
You might also want to trim any whitespace before testing any of the stripped email substrings.
您可能还想在测试任何剥离的电子邮件子字符串之前修剪任何空格。
回答by JAY
Try this for jquery validation:
试试这个用于 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.");
回答by Shubham Yeole
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="[email protected]">
<input type='submit' value="check">
</form>
</div>
<div class="divSection" >
<p class="pSection" id='result'></p>
</div>
This is javascript code to check if email contains more than one @ characters
这是用于检查电子邮件是否包含多个 @ 字符的 JavaScript 代码
var count=0;
email = "shubham20.ye@[email protected]";
alert(email);
for(i =0; i<email.length;i++){
if(email.charAt(i) == "@"){
count++;
}}
if(count>1){
alert("not ok")
} else {
alert("ok")
}
Alternate way is by using the standard pattern of the email
另一种方法是使用电子邮件的标准模式
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);