正则表达式验证在java和java scipt的电子邮件地址

问题描述:

我们正在使用下面的正则表达式来验证电子邮件地址在java ^[\\w!#\\$'\\*\\+=\\?\\^\\/_~-]+(\\.[\\w!#\\$'\\*\\+=\\?\\^\\/_~-]+)*@([a-zA-Z0-9\\-]+\\.)+[A-Z]{2,4}$和它工作正常与无效的电子邮件地址[email protected]&^(*&^(*^2但是当我在JavaScript中使用相同的正则表达式,它不工作和失败,甚至有效的电子邮件地址。请建议可能是这种不匹配的根本原因?正则表达式验证在java和java scipt的电子邮件地址

例如,在JavaScript中,我越来越假值低于测试条件 -

/^ [\ w#\ $'\ * \ + = \ \^\/〜 - !?] +(\ [ \ w!#\ $'\ * \ + + = \?\^\/〜 - ] +)* @([a-zA-Z0-9 \ - ] + \)+ [AZ] {2, 4} $ /测试( “[email protected]”)

+0

你为什么不使用专用的API为这个(mailapi)? – fge 2014-10-27 09:54:05

+0

[使用正则表达式验证电子邮件地址]可能的重复(http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address) – 2014-10-27 09:59:58

+1

抱歉,但它不是重复的。我可以谷歌,并从互联网上得到正则表达式,但我的要求是使用相同的regrx在Java程序中使用不工作。 – Raj 2014-10-27 10:03:14

您需要\\转换为\在Javascript中的正则表达式文字:

/^[\w!#$'*+=?^\/~-]+(\.[\w!#$'*+=?^\/~-]+)*@([a-zA-Z0-9-]+\.)+[A-Z]{2,4}$/i.test("[email protected]") 

也有许多特殊字符的正则表达式像$,+,*等不需要在字符类内部转义,因此我已经从字符类中删除了不必要的转义。

+0

/^[\w!#$'*+=?^\/~-]+((.[\w!#$'*+=?^\/~-]+)*@([a-zA -Z0-9 - ] + \。)+ [AZ] {2,4} $ /。test(“[email protected]”) - 当我在java脚本控制台中运行这个时,仍然出现错误 – Raj 2014-10-27 09:59:16

+1

** [在此工作](http://regex101.com/r/eD6lW1/1)**确保使用'i'(忽略大小写)标志。 – anubhava 2014-10-27 10:04:28

试试这个,它适用于我。

/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/.test('[email protected]'); 

<html> 
 

 
<body> 
 
    <script> 
 
    var flag = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/.test('[email protected]'); 
 
    </script> 
 
    <h5><script>document.write(flag)</script></h5> 
 
</body> 
 

 
</html>