2015-10-05 35 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]$ 
相關問題