我有一个适用于用户名的正则表达式。 我想稍微调整它来阻止-_字符被用作用户名的第一个/最后一个字符。但是,允许他们在用户名中的其他地方。
这是我到目前为止所做的。
if(!preg_match('/^[a-zA-Z0-9_-]{3,16}+$/', $user)){
echo 'not valid';
} else {
echo "is valid username";
}
答案 0 :(得分:3)
正则表达式末尾的+
实际上应该抛出错误。只需删除它。
使用此,简单明了:
^[a-zA-Z0-9][a-zA-Z0-9_-]{1,14}[a-zA-Z0-9]$
答案 1 :(得分:2)
使用lookarounds
。
^(?![_-])[a-zA-Z0-9_-]{3,16}(?<![_-])$
在+
{1,16}