2016-08-11 58 views
-2

想验证用户可以输入任何类型电子邮件的电子邮件字段。 当用户从Outlook复制粘贴的电子邮件地址时,使用正则表达式的验证检查失败。从Outlook复制电子邮件地址格式不同,因为验证从Outlook复制的电子邮件地址

M, Karan <[email protected]> 

而且我输入的样子[email protected],M, Karan <[email protected]>。如何验证此输入。

++添加代码段

AM用逗号分隔符分割它下面函数传递个人电子邮件,

function validateEmail(email) { 
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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); 
} 

该逻辑爆发时的电子邮件从输入元件提供前景复制。

寻求帮助。

+0

这个问题太含糊。请提供您尝试过的代码或代码示例。 – Twisty

+0

感谢您的回复。我刚刚添加了正在使用的代码段。正如我从移动添加它,我没有看到代码片段的格式选项。道歉。 – Krupa

+0

我建议你分解字符串。您可能需要执行多次传球。首先,我们知道某些电子邮件地址中不能包含某些字符。空间是第一个明显的角色。我会在空格上分割字符串,测试每个字符串以查看它是否是电子邮件。 – Twisty

回答

0

1.解决方案 使用正则表达式这样的(但具体这个正则表达式是不是最好的世界:)的):

^(([a-zA-Z\-0-9,.: ])*<){0,1}(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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,}))>{0,1}$ 

2.解决方案 编写JavaScript函数解析电子邮件然后使用你的正则表达式。这里是解析函数的例子:

function parseEmail(origin) { 
    return origin.substring(origin.lastIndexOf('<')+1, origin.lastIndexOf('>')); 
}