我只是使用javascript学习正则表达式匹配,并对下面描述的场景有疑问。
我正在尝试验证电子邮件,条件如下:
格式应为
xxx@yyy.zzz
其中
A)“xxx”,“yyy”和“zzz”部分 只能在小写字母a和z之间取值 B)zzz的长度, yyy和xxx部分是任意的(尽管应该是最小的)
现在我明白我可以像这样建立正则表达式:
修改:
CORRECTED 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到@的索引的字符。
答案 0 :(得分:3)
/[a-z]+@[a-z]\.[a-z]+/
与“aaa@aaa.aaa”不匹配,但匹配“aaa@a.aaa”。您只允许在@和。
之间输入单个小写字母同样,字符串“a999@aaa.aaa”将不匹配。 [a-z] +表示在a和z之间查找一个或多个字符...不包括数字,因此999将不匹配。
正则表达式
/ [A-Z] + @ [A-Z] + / [A-Z] + /
做你想做的事?
答案 1 :(得分:3)
您的正则表达式不会显示a999@aaa.aaa
为匹配项。但是,它会显示9999a@aaa.aaa9999
是匹配的。您缺少的正则表达式标记对于字符串的开头是^
,对于字符串的结尾是$
。这就是你要找的东西:
/^[a-z]{1,}@[a-z]+\.[a-z]+$/
您可以在此在线验证器上测试此表达式:http://tools.netshiftmedia.com/regexlibrary/#