2015-12-21 95 views
0

我遇到了一个体面的电子邮件正则表达式的描述。Javascript电子邮件正则表达式

/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ 

但我也想加入一些标点符号到电子邮件中的第一部分,同时保留了其他的功能(如无重复。)

我想出了这样最好很远的是:

([\/!#$%&'*+-=?^_`{|}~]*\w+)([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,40})+$ 

但是这不会允许在电子邮件的第一部分结束时标点符号。

我觉得正则表达式很混乱,有谁知道如何正确实现这个?

例子:

Yes [email protected] 
Yes [email protected] 
Yes [email protected] 
Yes [email protected] 
Yes [email protected] 
Yes [email protected][123.123.123.123] 
Yes "email"@domain.com 
Yes [email protected] 
Yes [email protected] 
Yes [email protected] 
Yes [email protected] 
Yes [email protected] 
Yes [email protected] 
No plainaddress 
No #@%^%#[email protected]#[email protected]#.com 
No @domain.com 
No Joe Smith <[email protected]> 
No [email protected]@domain.com 
No [email protected] 
No [email protected] 
No [email protected] 
No あいうえお@domain.com 
No [email protected] (Joe Smith) 
No [email protected] 
No [email protected] 
No [email protected] 
+0

你能提供样本输入吗? – anubhava

+1

我可以给出的最佳提示是:用正则表达式开始小(只是基本的),并从那里展开。这使你控制你在做什么而不是像方法trial – 321X

+1

试用错误看看这个线程[在JavaScript验证电子邮件地址](http://stackoverflow.com/questions/46155/validate-email-address -in-javascript) – Klante

回答

1

这是我现在最接近的尝试,我认为这是大致正确

^[a-zA-Z0-9_!#$%&‘*\=\+\/\?^{|}~]+([\.-]?[a-zA-Z0-9_!#$%&‘*\=\+\/\?^{|}~]+)*@\w+([\.-]?\w+)*(\.\w{2,50})+$ 
0

你需要从here其相当于[A-Za-z0-9_]更换\w和逃避所有的特殊字符。

试试这个: -

/^[\/\!#\$\%&'\*\+\-\=\?\^_`\{\|\}~A-Za-z0-9]+[\.-]?[\/\!#\$\%&'\*\+\-\=\?\^_`\{\|\}~A-Za-z0-9]*@\w+([\.-]?\w+)*(\.\w{2,40})+$/ 
0
([a-zA-Z0-9\-\_\"]+)([\_\.\-\+{1}])?([a-zA-Z0-9\-\"\_]+)\@([a-zA-Z0-9\[]+)([\-])?([a-zA-Z0-9]+)?([\.])([a-zA-Z0-9\.\]]+) 

杰克,我所提到的将提供这个问题的解决方案的表达。这将根据问题给出想要的结果。

相关问题