2014-02-07 136 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

相关问题