对于我的注册,我用我的正则表达式检查用户名 - 用户名必须包含超过 3 个字符且少于 20 个字符。用户名只能包含数字字符和"_",".","-"。
/^(['w'.'-]{3,20})$/isu.
现在我也想检查(p-),如果存在返回错误的用户名不能内容(p-)
private $regExpUsername = "/^(['w'.'-]{3,20})$/isu";
private function checkUsername($username){
if(!preg_match($this->regExpUsername, $username)){
$this->addError(ERR_ENTER_USERNAME);
}
}
我知道
您不希望用户名以-
结尾。这将是这个
^['w.-]{2,19}['w.]$
由于'w
包含下划线,这将允许用户名以下划线结尾,但不能以破折号结尾,因为破折号不是定义最后一个字符的字符类的一部分。
在正则表达式上看到它
正如 zerkms 评论的那样,s
修饰符在这里毫无意义,因为它改变了您不使用的.
特殊字符的行为。
此外,i
修饰符没有意义,它会匹配小写和大写字母,但您不使用字母来定义表达式。
更新
然后你需要一个消极的展望
^(?!.*p-)['w.-]{3,20}$
(?!.*p-)
是一个负面的展望,一旦字符串中的任何位置有p-
,此断言就会失败。
在正则表达式上看到它