use*_*799 8 javascript regex email validation
我正在尝试使用正则表达式来验证逗号分隔的电子邮件列表.
我想首先验证完整列表,然后拆分(";"),然后从拆分中修剪每个数组值(每个电子邮件).
我想验证以下表达式:
EMAIL,EMAIL --> Ok
EMAIL, EMAIL --> Ok
EMAIL , EMAIL --> Ok
EMAIL , , EMAIL --> Wrong
EMAIL , notAnEmail , EMAIL --> Wrong
Run Code Online (Sandbox Code Playgroud)
我知道验证电子邮件有很多复杂的表达方式,但我不需要任何花哨的东西,这对我有用: /\S+@\S+\.\S+/;
我想要简单明了的JS,而不是jQuery.谢谢.
编辑:我已经考虑过拳头验证然后拆分,但是到目前为止我已尝试过的表达式,这将被验证为两个正确的电子邮件:
EMAIL, EMAIL . EMAIL
Run Code Online (Sandbox Code Playgroud)
我想像每封电子邮件一样验证列表本身.
一种更简单的方法是删除空格并首先拆分字符串:
var emails = emailList.replace(/\s/g,'').split(",");
Run Code Online (Sandbox Code Playgroud)
这将创建一个数组.然后,您可以遍历数组并检查元素是否为空并且是否为有效的电子邮件.
var valid = true;
var regex = /^(([^<>()[\]\\.,;:\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,}))$/;
for (var i = 0; i < emails.length; i++) {
if( emails[i] == "" || ! regex.test(emails[i])){
valid = false;
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我从这里得到了正则表达式
我使用正则表达式很多年了,代码是相同的。我相信这对每个人都有效:
^(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]{2,4}\s*?,?\s*?)+$
Run Code Online (Sandbox Code Playgroud)
要开心 :)
另请注意,您需要删除额外的空格,因此需要添加一个额外的步骤,如下所示:
var emailStr = "felipe@google.com , felipe2@google.com, emanuel@google.com\n";
function validateEmailList(raw){
var emails = raw.split(',')
var valid = true;
var regex = /^(([^<>()[\]\\.,;:\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,}))$/;
for (var i = 0; i < emails.length; i++) {
if( emails[i] === "" || !regex.test(emails[i].replace(/\s/g, ""))){
valid = false;
}
}
return valid;
}
console.log(validateEmailList(emailStr))
Run Code Online (Sandbox Code Playgroud)
通过添加,.replace(/\s/g, "")您可以确保删除所有空格,包括新行和制表符。样本的结果是真实的,因为我们正在摆脱所有空间。
| 归档时间: |
|
| 查看次数: |
14881 次 |
| 最近记录: |