用户名和电子邮件正则表达式具有非常具体的规则

时间:2013-11-27 11:38:23

标签: javascript regex validation regex-negation regex-lookarounds

我正在尝试制作一个正则表达式来验证用户名。到目前为止,我有:

/^[^\.]{1}[A-Za-z0-9]*\.?[A-Za-z0-9]*[^\.]{1}$/

但它没有像我预期的那样工作。

以下规则用于验证用户名:

  1. 它必须大于3个字符长。 (minlength = 3
  2. 长度必须少于20个字符。 (maxlength = 20
  3. 最多可包含一个期间。
    • E.g。 xyz xyz.com 有效但 xyz.abc.com 无效。
  4. 不得在字符串的开头或结尾包含句点。
    • E.g。 .xyz xyz。无效。)
  5. 除了可选期间,它可能只包含[A-Za-z0-9]个字符。
  6. 此外,在另一个页面上,用户可以输入用户名或电子邮件地址。有没有办法验证字符串是 有效用户名还是同一正则表达式中的有效电子邮件地址?

    有效值的一些示例:

    1. ABC
    2. abc.com
    3. abc@zyx.com (电子邮件地址)
    4. ABC123
    5. 123ABC
    6. 1a2b3c
    7. 无效值的一些示例:

      1. .abc (领先期)
      2. abc。(尾随期)
      3. a b c (无效字符)
      4. abc @ xyz (电子邮件地址无效)
      5. a.b.c (多个时期)
      6. a-b $ c (无效字符)

2 个答案:

答案 0 :(得分:3)

如果你在脚本中检查长度而不是使用正则表达式

,这很容易

但如果你必须这样做,你可以使用预先执行此操作:

/^(?=[a-z0-9.]{3,20}$)[a-z0-9]+\.?[a-z0-9]+$/i

[A-Za-z0-9]\w

相同

如果您想使用相同的正则表达式来验证usernamee-mail地址,请将您的第二个正则表达式放在|符号之后:

/^(?=[a-z0-9.]{3,20}$)[a-z0-9]+\.?[a-z0-9]+$|^.*@\w+\.[\w.]+$/i
在这种情况下,

^.*@\w+\.[\w.]+$是一个非常简单的邮件验证(您可能希望使用更好的邮件验证)

你不应该在一个正则表达式中做太多。

答案 1 :(得分:1)

您好,我为用户名提供了解决方案,它只允许在用户名中使用下划线作为特殊字符,并且还有助于同时验证电子邮件

/^(?=.{3,16}$)[a-zA-Z0-9]+([_?[a-zA-Z0-9]+)$|^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i