php使用正则表达式判断 字符串只能包含 中英文,数字,还有‘-’,‘_’,求这个正则表达式。

php使用正则表达式判断 字符串只能包含 中英文,数字,还有‘-’,‘_’,求这个正则表达式。

  [\u4e00-\u9fa5a-zA-Z0-9\-\_]+
  [-\u4e00-\u9fa5\w]+

中文必须是UTF-8的,GBK的中文不兼容

 preg_match( '/[\x{4e00}-\x{9fa5}\w\-]+/u', $subject, $arr);

答案有点错误,php正确的正则是 /^[\x{4e00}-\x{9fa5}\w-]+$/u