支持UTF字符的字母数字正则表达式?

时间:2014-02-07 16:11:31

标签: php regex pcre

所以 - 对于注册表单(用户名字段)我想允许字母字符,数字,下划线和短划线。问题是 - >用户应该能够使用他们的原生字母,而不仅仅是拉丁语。所以应该允许西里尔字母和其他字符....但不要像:$%^ *()等字符。

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

^高于正则表达式结果为真,即使我不想允许@ - &gt;我究竟做错了什么?

1 个答案:

答案 0 :(得分:3)

使用行尾锚$也可以避免匹配不需要的输入:

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