如何制作regex来验证用户名



我已经编写了这个正则表达式

/(?=.*[a-z])(?!.*[A-Z])([w_-.].{3,10})/g

检查以下条件

>has minimum of 3 and maximum of 10 characters.
>must contain atleast a lowercase alphabet.
>must contain only lowercase alphabets, '_', '-', '.' and digits.

这是有效的,但即使有超过10个字符,也会返回true。

我想要一个新的或修改过的正则表达式来检查上面给定的条件。

  1. 添加hanchors
  2. 删除最后一个点
  3. 如果你使用了正确的字符类,那么否定的前瞻性是没有用的

此正则表达式将起作用:

^(?=.*[a-z])[a-z0-9_.-]{3,10}$

演示&解释

您可以使用此REGEX

REGEX演示

([a-z]{1}[0-9a-z_.-]{2,9})

,已尝试文本

username77
usr
username10
user_test
usr.1000

有很多方法可以做到这一点。我相信共同的特点是他们都会有一个积极的前景。这是另一个。

^(?=.{3,10}$)[a-zd_.-]*[a-z][a-zd_.-]*$

演示

请注意,[a-zd_.-]*出现两次。一些正则表达式引擎支持子例程(或子表达式(,允许将正则表达式的重复部分保存到编号或命名的捕获组中,以便稍后在字符串中重复使用。例如,当使用PCRE引擎时,您可以编写

^(?=.{3,10}$)([a-zd_.-]*)[a-z](?1)$

演示

(?1)由与保存到捕获组1([a-zd_.-]*(的字符串匹配的正则表达式标记替换,而1引用捕获组1的内容。使用子例程可以缩短正则表达式,但更重要的是,当对正则表达式的标记进行重复更改时,它可以减少出错的机会。

相关内容

  • 没有找到相关文章

最新更新