【发布时间】:2011-12-22 17:33:30
【问题描述】:
我只是在学习使用 javascript 进行正则表达式匹配,对下面描述的场景有疑问。
我正在尝试验证电子邮件,条件如下:
格式应该是
xxx@yyy.zzzwhere
A) “xxx”、“yyy”和“zzz”部分 只能取小写 a 和 z 之间的值
B)zzz的长度, yyy 和 xxx 部分是任意的(但应该至少是一个)
现在我知道我可以像这样构建正则表达式:
编辑:
更正 REG EXP
/[a-z]+@[a-z]+\.[a-z]+/
上面会评估像“aaa@aaa.aaa”这样的字符串为真。
但我担心的是,在上面的表达式中,如果我提供"a999@aaa.aaa",它会再次评估为真。现在,如果我将 reg ex 修改为 **/[a-z]{1,}@[a-z]+\.[a-z]+/** 即使这样,它也会将 "a999@aaa.aaa" 评估为真,因为“a”作为第一个字符存在。
所以,我想知道如何匹配电子邮件"xxx@yyy.zzz" 中的第一部分“xxx”,以便它检查从第一个字符到到达@ 符号的整个字符串,条件是它应该采用只有 a 到 z 作为有效值。
换句话说,正则表达式不应该介意电子邮件的用户名部分的长度,并且无论输入的字符数如何,它都应该根据指定的正则表达式条件对其进行测试,并且应该针对一组从索引 1 到 @ 的索引的字符。
【问题讨论】:
-
为什么你认为“a999@aaa.aaa”会被评估为真的?
/[a-z]+@[a-z]+\.[a-z]+/.test("a999@foo.com") === false(@符号后面的邮件地址部分缺少+) -
我在输入问题时错过了 + 号。已编辑原始问题。
标签: javascript regex pattern-matching email-validation