2012-09-10 63 views
0

我想验证一个电子邮件地址的开头。我将强制用户使用我的'@ company.com'域名,因此使用该域名并不重要。这是我正在使用的正则表达式:正则表达式刚刚开始的电子邮件

var validateEmail = /^[A-Z0-9._%+-]$/ 

而且我正在用警报测试它。

alert(validateEmail.test([$(this).attr('value')])); 

通过jQuery获取的值是用户输入。我测试的所有提示都是false。有没有人看到为什么?根据我的理解,这应该意味着:行首,字符集为字母数字加上. _ % + -符号,然后行结束。我究竟做错了什么?即使只有'a'警报false

+2

你好像只匹配一个字符。它应该可能是'[+] –

+2

'$(this).val()'可能比'$(this).attr('value')更容易阅读' – mplungjan

回答

2

你的正则表达式只匹配单个字符。您需要添加+符号或{min,max}来指定最小和最大长度。

var validateEmail = /^[A-Z0-9._%+-]+$/; 
1

你的正则表达式将只匹配从集合的单个字符,添加+到至少一个字符从您所设定的匹配:

var validateEmail = /^[A-Z0-9._%+-]+$/; 

而且你忘了把小写字符你的正则表达式对象:

var validateEmail = /^[A-Za-z0-9._%+-]+$/; 

或者设置忽略大小写标志:

var validateEmail = /^[A-Z0-9._%+-]+$/i; 
0

您有多个问题。

  • a失败,因为它是小写字母,而您的正则表达式区分大小写。您可以使用i选项忽略套管。
  • 大多数其他有效的电子邮件地址会失败,因为您的正则表达式只允许1个字符。您可以在字符类[...]之后使用+以允许一个或多个字符,或者*允许0或更多。

var validateEmail = /^[A-Z0-9._%+-]+$/i;

相关问题