2015-10-19 52 views
-5

我需要验证用户名,则要求如下:正则表达式来验证用户名

  • 长度为至少8,每次最多20
  • 具有包含字母(az ),没有大写字母
  • 可以包含符号点(),连字符( - )或下划线(_),其他符号被禁止

有人知道这个正则表达式吗?

+1

很好的问题。什么是努力?已经在SO里搜索过了吗? – soorapadman

+0

查看在线文档[regular-expressions.info/](http://www.regular-expressions.info/) – morels

回答

3

既然你没有表现出多大的努力,试图弄清楚这一点也不一会然而,给你一个领先地位,我会为你提供一个正则表达式,将一种帮助你建立你想要的正则表达式:

[a-z\.\-\_]{8,20}

在这里你可以看到:
[ ] - 一个字符类:它里面的任何字符可以匹配
{ } - 量词:8个20个字符长
a-z之间 - 然GE从az
\.所有字符 - 匹配一个点
\- - 匹配一个连字符
_ - 匹配文本的下划线

然而,该正则表达式是越野车的:例如,用户名由8个(或更多)点也被接受:.........,所以只有符号的组合,没有字母:-_-__-_._-。我相信这不是一个预期的行为。

你可以在这里看到一个演示:regex101.com

+1

提示:Lookahead表达式(以'(?=')开始)。这样就可以修复由Asunez。 –