我在尝试使用RegEx匹配电子邮件地址时犯了什么错误?

时间:2013-02-24 04:44:53

标签: javascript regex

我正在尝试使用以下脚本检查电子邮件地址的格式,但在某处我犯了一个错误。我尝试将模式reg_1str_1 , str_2, str_3匹配我弄错了。那是为什么?

var reg_1 = /^[a-zA-Z][0-9_.][@]{1}[a-zA-Z0-9][.]{1}[a-zA-Z0-9]$/;
var id_1 = "suhailgupta03@gmail.com";
var id_2 = "gupta.suhail@rediff.com";
var id_3 = "suhail_gupta03@ovi.com";

document.write(reg_1.test(id_1));
document.write("<br / >" + reg_1.test(id_2));
document.write("<br / >" + reg_1.test(id_3));

3 个答案:

答案 0 :(得分:2)

您似乎误解了字符类符号[...]。例如,[a-zA-Z][0-9_.]表示“字母a-zA-Z,后跟数字0-9或下划线_或点.”。< / p>

我想你想要的是:

var reg_1 = /^[a-zA-Z0-9_.]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/;

除了真正必要的更改之外,我还执行了一些清理:具体来说,我将[@]更改为@(没有理由将其包装在字符类中)和{ {1}} [.] {同样地,除了\.当你的意思是“点”而不是“任何字符”时需要转义),我删除了.(因为那是无论如何隐含)。

(但请注意,这不是一个通用的电子邮件地址验证正则表达式。电子邮件地址实际上非常复杂,真正验证一个的唯一方法是向其发送电子邮件看看它是否到了!)

答案 1 :(得分:0)

不要这样做。我实际上只是写了一篇博客文章,说明为什么这是一个有缺陷的方法:How to (not) Validate an Email Address

总之,这样的事情应该绰绰有余:

var emailValidation = /.+@.+\..+/;
console.log(emailValidation.exec("user@example.com") != null); // Result: "true"
console.log(emailValidation.exec("www.example.com") != null); // Result: "false"

答案 2 :(得分:0)

首先,您正在寻找以两个字符开头,后跟@符号的字符串,并且您的所有电子邮件都不会像这样开始。