PHP Regex字符串允许中文单词,字母数字&很少有特殊字符


PHP Regex String Allow Chinese Word, alphanumeric & few special characters

hi可以帮助在下面的代码做验证在用户名文本字段。只允许中文单词、字母、数字和特殊字符"_"answers"-"。

补充道:我试图创建一个验证用户名文本字段,允许中文单词,字母数字&"-","_"。我试图找出下面的正则表达式,但它不像我预期的那样工作。任何人都可以帮忙。

if (preg_match("/[~`!@#$%^&*()+={}'[']|'':;'"'<>,.?'/]/", "小明@ah meng"))
{
  echo "invalid";
}
else
{
  echo "valid";
}

汉统一从CJK中理解了多个代码点。由于PCRE允许使用'p标记的Unicode分类,因此您可以使用'p{Han}匹配大多数中文字符。

代码:

<?php
    $str = "小明ahmeng";
    $regex = '/^[-_A-Za-z0-9'p{Han}]+$/u';   // notice spaces are not included
    if (preg_match( $regex, $str)) {
        echo "valid";
    } else {
        echo "invalid";
    }
?>

演示

另外,当您使用UTF-8编码的字符串时,不要忘记设置/u修饰符。