我想创建一个preg_match
函数来验证我的用户名,下面的代码不能正常运行,特别是Must contain at least 4 letter lowercase
规则和number not more than 4 character and place behind letter
if (preg_match('/^[a-z0-9]{4,12}/', $_POST['username']))
以下是我想要使用的用户名规则:
感谢您提供任何帮助。
答案 0 :(得分:1)
您符合这些标准,也许这是一个选项:
^[a-z](?=(?:[a-z]*\d){0,4}(?![a-z]*\d))(?=[a-z\d]{3,11}$)[a-z\d]+$
这将匹配
^
[a-z]
(?=
,断言以下是
(?:
[a-z]*\d
){0,4}
(?!
断言后面的内容不是[a-z\d]*
)
)
(?=
,断言以下是
(?=[a-z\d]{3,11}$)
)
[a-z\d]+$
答案 1 :(得分:0)
正则表达式:^[a-z]{4,8}[0-9]{0,4}$|^[a-z]{4,12}$
详细说明:
^
在行的开头断言位置$
断言位于行尾的位置[]
匹配列表中的单个字符{n,m}
n
和m
次之间的匹配|
或PHP代码:
$strings=['testtesttest', 'testtesttestr', 'test12345', 'testtest1234', 'testte123432'];
foreach($strings as $string){
$match = preg_match('~^[a-z]{4,8}[0-9]{0,4}$|^[a-z]{4,12}$~', $string);
echo ($string . ' => len: (' . strlen($string) . ') ' .($match ? 'true' : 'false')."\n");
}
输出:
testtesttest => len: (12) true
testtesttestr => len: (13) false
test12345 => len: (9) false
testtest1234 => len: (12) true
testte123432 => len: (12) false