我已经编写了这个正则表达式
/(?=.*[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。
我想要一个新的或修改过的正则表达式来检查上面给定的条件。
- 添加hanchors
- 删除最后一个点
- 如果你使用了正确的字符类,那么否定的前瞻性是没有用的
此正则表达式将起作用:
^(?=.*[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的内容。使用子例程可以缩短正则表达式,但更重要的是,当对正则表达式的标记进行重复更改时,它可以减少出错的机会。