Javascript 验证电子邮件的正则表达式
我有一个收件人文本框,允许输入电子邮件地址并发送给此人。正如您所知,当某人输入电子邮件时,需要考虑使用正则表达式。例如,没有Javascript 验证电子邮件的正则表达式,javascript,Javascript,我有一个收件人文本框,允许输入电子邮件地址并发送给此人。正如您所知,当某人输入电子邮件时,需要考虑使用正则表达式。例如,没有@的电子邮件不是有效的电子邮件 因此,我编写了一个函数来检查电子邮件的正则表达式,如下所示: //check email address function validateEmail(email) { var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)
@
的电子邮件不是有效的电子邮件
因此,我编写了一个函数来检查电子邮件的正则表达式,如下所示:
//check email address
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\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 re.test(email);
}
所以,如果我输入上面的内容,它会将其视为无效,但鉴于我在正则表达式中的表现不好,有没有办法让它通过
编辑:
这是我的正则表达式的外观:
var re = /(?:^|,)((([^<>()[\]\\.,;:\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,}))(?:$|(?=,)))/;
var re=/(?:,)(([^()[\]\],;:\s@“]+(\.[^()[\]\],;:\s@“]+)*)(\”+)(\”)((\[[0-9]{1,3}.[0-9]{0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.}.[1,3}.];
在模式的开头,为、
或字符串的开头添加一个非捕获组:
(?:^|,)
在模式的末尾,为字符串的末尾添加一个非捕获组,或对,
进行前瞻:
(?:$|(?=,))
如果用逗号分隔,则允许在一行上进行多个匹配
(?:^|,)(([^<>()[\]\\.,;:\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,}))(?:$|(?=,))
^^^^^^^ ^^^^^^^^^^^
(?:)(([?:[\]\,;:\s@\”]+(\[?([\]\,;:\s@\”]+)*(\“+”)(\”)((\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.]}.]
^^^^^^^ ^^^^^^^^^^^
如果您不仅想验证电子邮件,还想提取电子邮件,这有时会包括一个前导逗号,这可能是不可取的-要解决这一问题,请在另一个组中的初始非捕获组之后将所有内容括起来:
(?:^|,)((([^<>()[\]\\.,;:\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,}))(?:$|(?=,)))
(?:)(((?:[\]\,;:\s@\)+(\[?([\]\,;:\s@\)*(\“+”)(\”)((\”))((\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]}.[1,3}.[1,3}.]
仅电子邮件地址将在第一个捕获的组中
如果要检查字符串是否包含逗号分隔的电子邮件地址,而不是逗号分隔的电子邮件地址,则可以使用第一种模式,将每个匹配的电子邮件替换为空字符串,并检查最终生成的字符串是否为空:
功能验证电子邮件(电子邮件){
变量re=/(?:^,)(([^()[\]\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*(\“+”)((\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]}.[1,3}.]}.[1,3}.];
返回电子邮件。替换(重新“”)='';
}
console.log(validateEmail('test@hotmail.com,test123@hotmail.com'));代码>请检查此代码:
函数sendmessage(){
var recipient=document.getElementById(“收件人”).value;
var结果=验证邮件(收件人);
警报(结果);
}
函数validateEmails(emailString){
var regex=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var result=emailString.replace(/\s/g,“”).split(/,|;/);
for(变量i=0;i
邮寄
整个事情看起来怎么样?我真的不善于识别我看到的符号。因此,它基本上是检查电子邮件的结尾是否有逗号
?它只会在电子邮件开始时(在字符串开头或逗号之后)和结束时(在字符串末尾或另一个逗号之前)验证电子邮件。因此它也会检查,test@hotmail.com
是否为无效权限?那test@hotmail.com,
?尝试您的解决方案并输入test@hotmail.com,test123@hotmail.com
但它仍然抛出无效的。可能重复
(?:^|,)((([^<>()[\]\\.,;:\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,}))(?:$|(?=,)))