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

问题描述 投票:1回答:2

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

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

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

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

  1. 必须大于3个字符长。 (minlength = 3
  2. 必须少于20个字符。 (maxlength = 20
  3. 它最多可以包含一个期间。
    • 例如xyzxyz.com有效,但xyz.abc.com无效。
  4. 它不能在字符串的开头或结尾处包含句点。
    • 例如。xyzxyz。无效)。
  5. 除可选句号外,它只能包含[A-Za-z0-9]个字符。

此外,在另一页上,允许用户输入其用户名或电子邮件地址。是否有任何方法可以验证字符串是否是同一正则表达式中的或者有效用户名或有效电子邮件地址?

一些有效值的示例:

  1. abc
  2. abc.com
  3. [email protected](电子邮件地址)
  4. abc123
  5. 123abc
  6. 1a2b3c

一些无效值的示例:

  1. 。abc(前置期间)
  2. abc。(追溯期)
  3. a b c(无效字符)
  4. abc @ xyz(无效的电子邮件地址)
  5. a.b.c(多个期间)
  6. a-b $ c(无效字符)
javascript regex validation regex-negation regex-lookarounds
2个回答
3
投票

如果您在脚本中而不是使用regexp来检查长度,则非常简单

但是如果需要,您可以使用预读来完成此操作:

/^(?=[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.]+$在这种情况下是一种非常简单的邮件验证(您可能希望使用更好的一种)]

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


0
投票

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

以下为正则表达式链接:

https://regex101.com/r/MQK532/1

/^(?=.{3,16}$)[a-zA-Z0-9]+([_?[a-zA-Z0-9]+)$|^.*@\w+\.[\w.]+$/i

© www.soinside.com 2019 - 2024. All rights reserved.