Javascript 如何使用Regex验证多封电子邮件?
在对Stackoverflow进行了快速研究之后,我无法找到任何使用regex进行多邮件验证的解决方案(split JS函数不适用,但出于某种原因,应用程序的后端会等待电子邮件以Javascript 如何使用Regex验证多封电子邮件?,javascript,regex,email-validation,Javascript,Regex,Email Validation,在对Stackoverflow进行了快速研究之后,我无法找到任何使用regex进行多邮件验证的解决方案(split JS函数不适用,但出于某种原因,应用程序的后端会等待电子邮件以;分隔的字符串) 以下是要求: 应使用以下规则验证电子邮件:[A-Za-z0-9\.\uz%-]+@[A-Za-z0-9\.-]+\.[A-Za-z]{2,4} Regex应该接受符号作为分隔符 电子邮件可以写在多行上,以结尾 正则表达式可以接受行尾为 我提出了这个解决方案: ^[A-Za-z0-9\._%-]+@[A-
;
分隔的字符串)
以下是要求:
[A-Za-z0-9\.\uz%-]+@[A-Za-z0-9\.-]+\.[A-Za-z]{2,4}
代码>符号作为分隔符
结尾代码>
代码>
感谢您提供的所有帮助我们没有理由不使用split-后端显然也会这样做
var email = "[A-Za-z0-9\._%-]+@[A-Za-z0-9\.-]+\.[A-Za-z]{2,4}";
var re = new RegExp('^'+email+'(;\\n*'+email+')*;?$');
[ "john@smith.com;john@smith.com",
"john@smith.com;john@smith.com;",
"john@smith.com;\njohn@smith.com;\njjoh@smith.com",
"john@smith.com jackob@smith.com",
"jackob@smith.com,",
"daniels@mail.com\nsmth@mail.com" ].map(function(str){
return re.test(str);
}); // [true, true, true, false, false, false]
return str.split(/;\s*/).every(function(email) {
return /.../.test(email);
}
看看电子邮件正则表达式的好坏。我就是这样做的(ASP.Net应用程序,无jQuery)。在多行文本框中输入电子邮件地址列表:
function ValidateRecipientEmailList(source, args)
{
var rlTextBox = $get('<%= RecipientList.ClientID %>');
var recipientlist = rlTextBox.value;
var valid = 0;
var invalid = 0;
// Break the recipient list up into lines. For consistency with CLR regular i/o, we'll accept any sequence of CR and LF characters as an end-of-line marker.
// Then we iterate over the resulting array of lines
var lines = recipientlist.split( /[\r\n]+/ ) ;
for ( i = 0 ; i < lines.length ; ++i )
{
var line = lines[i] ; // pull the line from the array
// Split each line on a sequence of 1 or more whitespace, colon, semicolon or comma characters.
// Then, we iterate over the resulting array of email addresses
var recipients = line.split( /[:,; \t\v\f\r\n]+/ ) ;
for ( j = 0 ; j < recipients.length ; ++j )
{
var recipient = recipients[j] ;
if ( recipient != "" )
{
if ( recipient.match( /^([A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+\@([A-Za-z0-9_-]+\.)+[A-Za-z]{2,4}$/ ) )
{
++valid ;
}
else
{
++invalid ;
}
}
}
}
args.IsValid = ( valid > 0 && invalid == 0 ? true : false ) ;
return ;
}
函数ValidateRecipientEmailList(源,参数)
{
var rlTextBox=$get(“”);
var recipientlist=rlTextBox.value;
var valid=0;
var无效=0;
//将收件人列表分成几行。为了与CLR常规i/o保持一致,我们将接受任何CR和LF字符序列作为行尾标记。
//然后我们迭代得到的线数组
var lines=recipientlist.split(/[\r\n]+/);
对于(i=0;i0&&invalid==0?true:false);
返回;
}
为什么拆分不可行?为什么是3。不行吗?根据规则4,正则表达式可以接受行尾为
和两封电子邮件以行尾分隔(另外,您可以拆分、验证,然后连接到一起传递到“应用程序的后端”吗?),下面是一个简短的故事:对于JavaScript代码的更改,我必须编写长报告,需要3-4天的批准时间,为什么我更改了“不属于我的范围”的代码,而无法验证以下格式。test@test.com;dddd