2014-02-07 99 views
1

因此 - 對於註冊表單(用戶名字段),我希望允許字母字符,數字,下劃線和破折號。問題是 - >用戶應該能夠使用他們的本地字母,而不僅僅是拉丁語。所以西里爾和其他字符應被允許....但並不像字符:$%^ *()等支持UTF字符的字母數字正則表達式?

<?php                   
    $test = 'dshfjfj_-7685гдежзи [email protected]@@@@'; 
    echo preg_match('/^[\pL\pN_-]+/u', $test); 
?> 

^上述正則表達式的結果爲真,即使我不想讓@ - >我究竟做錯了什麼?

回答

3

線錨$使用結束也避免了不必要的匹配輸入:

preg_match('/^[\p{L}\p{N}_-]+$/u', $test); 
+1

等待 - 跆拳道 - 那是什麼呢?它似乎現在正確驗證.. – Dannyboy

+2

@Dannyboy:[是的](https://eval.in/99049) –

+0

是的,你有我們的正則表達式幾乎正確,只是這個小但嚴重的錯過。 – anubhava

相關問題