ASP.NET用户名的正则表达式

时间:2015-03-01 17:53:53

标签: regex

我正在尝试创建一个正则表达式来验证用户名。我希望它遵循这条规则:

包含5到20个字母数字字符(大写或小写)和最多一个句点(但不包括结尾或开头)。

到目前为止,我已经提出以下建议:

(?:[a-zA-Z0-9]|([.])(?!\1)){5,20}$

这在大多数情况下都适用,但它仍然允许用户名在结尾和开头有一段时间 - 有人可以帮我调整它吗?

2 个答案:

答案 0 :(得分:4)

试试这个:

^(?i)(((?=.{6,21}$)[a-z\d]+\.[a-z\d]+)|[a-z\d]{5,20})$

这个正则表达式是:

  • (?i) - 不区分大小写(您也可以使用RegexOptions实现此目的);
  • ((?=。{6,21} $)[az \ d] + \。[az \ d] +) - 如果字符串包含单,则匹配6-21个字符期间;
  • [a-z \ d] {5,20} 如果字符串不包含句点,则匹配5-20个字符。

答案 1 :(得分:1)

这将是一个简单的解决方案:

^[a-zA-Z0-9][.a-zA-Z0-9]{3,18}[a-zA-Z0-9]$

只需为第一个和最后一个字符指定一个不带点的字符类。