我正在尝试使用以下脚本检查电子邮件地址的格式,但在某处我犯了一个错误。我尝试将模式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));
答案 0 :(得分:2)
您似乎误解了字符类符号[...]
。例如,[a-zA-Z][0-9_.]
表示“字母a-z
或A-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)
首先,您正在寻找以两个字符开头,后跟@符号的字符串,并且您的所有电子邮件都不会像这样开始。