我需要帮助来为用户名构建正则表达式.
用户名分为三个部分.第一个字符,中间组,最后一个字符.
以下是我必须遵循的规则:
(a-z)(a-zA-Z0-9)(0-9)一些例子:
hTes38 (i.e. h Tes3 8)
j347k6 (i.e. j 347k 6)
atksde21D2 (i.e. a tksde21D 2)
Run Code Online (Sandbox Code Playgroud)
以下是我到目前为止的情况,几乎就是:
^[a-z][a-zA-Z0-9]\w{1,}[0-9]$
Run Code Online (Sandbox Code Playgroud)
但中间组不正确,我不知道如何强制执行'必须包含一个字母和一个数字'规则.
使用两个前瞻(一个用于字母,一个用于数字)来断言中间部分至少有一个字母和一个数字:
^[a-z](?=.*[a-zA-Z])(?=.*\d.*.$)[a-zA-Z\d]{4,}\d$
Run Code Online (Sandbox Code Playgroud)
请注意,数字的前瞻(?=.*\d.*.$)结束.*.$,这确保整个输入的最后一位数不会被计为中间部分的数字(最后一个点消耗最后一个数字,因此它不可用于\d匹配).
查看带有样品和边缘情况的现场演示.
有关环顾四周的详细说明,请参阅此外部文章.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |