0

我只想验证电子邮件地址的开头。我将强制用户使用我的“@company.com”域,因此使用它并不重要。这是我正在使用的正则表达式:

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

我正在用警报测试它。

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

通过 jQuery 拉取的值是用户输入。我测试的所有东西都会以false. 有人知道为什么吗?据我了解,这应该意味着:行首,字母数字字符集加上. _ % + -符号,然后是行尾。我究竟做错了什么?即使只是一个“a”警报false

4

3 回答 3

2

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

var validateEmail = /^[A-Z0-9._%+-]+$/;
于 2012-09-10T17:04:15.697 回答
1

您的正则表达式将仅匹配您集中的单个字符,添加 a+以匹配您集中的至少一个字符:

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

而且您忽略了在您的正则表达式对象中包含小写字符:

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

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

var validateEmail = /^[A-Z0-9._%+-]+$/i;
于 2012-09-10T17:04:15.963 回答
0

你有多个问题。

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

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

于 2012-09-10T17:06:36.373 回答