我正在尝试使用preg_match()
验证PHP中的用户名,但我似乎无法按照我想要的方式运行它。我需要preg_match()
来:
preg_match('/^[a-zA-Z0-9]+[.-_]*[a-zA-Z0-9]{5,20}$/', $username)
答案 0 :(得分:6)
将需求细分为更小的部分,您会发现它变得更容易:
~^[a-z0-9]{1}[a-z0-9._-]{3,18}[a-z0-9]{1}$~i
答案 1 :(得分:2)
如果正则表达式让您感到困惑,您可以始终将字符与正则表达式匹配,然后使用strlen()
显式检查字符串的长度。
$valid = preg_match('/^[a-zA-Z\d]+[\w.-]*[a-zA-Z\d]$/', $username)
AND strlen($username) >= 5 AND strlen($username) <= 20;
答案 2 :(得分:2)
if (preg_match('~^[0-9a-z][-_.0-9a-z]{3,18}[0-9a-z]$~i', $username) > 0)
{
// valid
}