0

我正在尝试使用以下脚本检查电子邮件地址的格式,但在某个地方我犯了一个错误。当我尝试将模式reg_1与我匹配时,str_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));
4

3 回答 3

2

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

我猜你想要的是:

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

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

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

于 2013-02-24T04:47:21.200 回答
0

不要这样做。我实际上只是在写一篇关于为什么这是一种有缺陷的方法的博客文章:如何(不)验证电子邮件地址

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

var emailValidation = /.+@.+\..+/;
console.log(emailValidation.exec("user@example.com") != null); // Result: "true"
console.log(emailValidation.exec("www.example.com") != null); // Result: "false"
于 2013-02-24T04:47:12.557 回答
0

一方面,您正在寻找一个以两个字符后跟一个 @ 符号开头的字符串,而您的所有电子邮件都不是这样开头的。

于 2013-02-24T04:49:37.557 回答