Twitter用户名的正则表达式无法运行

3
以下用于验证Twitter用户名的正则表达式函数无法正常工作,因为Twitter用户名可以由1到20个字符组成。然而,当我测试时,它允许超过20个字符的用户名。我哪里出错了?
public function val_username($subject)
{
    return (bool)preg_match('/[a-zA-Z0-9_]{1,20}/', $subject);      
}

4
你需要在字符串的开头和结尾添加 ^$,以匹配字符串的起始和结束位置。否则,它将匹配任何长度为1-20个字符的字符串。 - andrewsi
1个回答

4

你忘记了$^

/^[a-zA-Z0-9_]{1,20}$/应该可以工作

public function val_username($subject)
{
    return (bool)preg_match('/^[a-zA-Z0-9_]{1,20}$/', $subject);      
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接