正则表达式使用javascript匹配字符串中的任意长度的字符?

时间:2011-11-05 16:59:55

标签: javascript regex pattern-matching email-validation

我只是使用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到@的索引的字符。

2 个答案:

答案 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/#