2015-10-05 36 views
-1

我有一个很好用于用户名的正则表达式。 我想调整它有点阻止-_字符被用作用户名的第一个/最后一个字符。但是,允许他们在用户名的其他地方。preg_match不允许最后一个字符是下划线或破折号

这是我到目前为止。

if(!preg_match('/^[a-zA-Z0-9_-]{3,16}+$/', $user)){ 
    echo 'not valid'; 
} else { 
    echo "is valid username"; 
} 

回答

2

使用lookarounds

^(?![_-])[a-zA-Z0-9_-]{3,16}(?<![_-])$ 

而且你不需要+{1,16}

3

+在你的正则表达式的结束实际上应该抛出一个错误。只要删除它。

使用此,简单明了:

^[a-zA-Z0-9][a-zA-Z0-9_-]{1,14}[a-zA-Z0-9]$ 
相关问题