PHP正则表达式字符串允许中文单词,字母数字和&几个特殊字符

时间:2015-09-21 05:29:52

标签: php regex

您可以在下面的代码中帮助您在用户名文本字段中进行验证。 仅允许使用中文单词,字母数字和特殊字符“_”和“ - ”。

添加了: 我正在尝试为用户名文本字段创建验证,允许使用中文单词,字母数字和& “ - ”& “_”。我试图找出如下的正则表达式,但它不能像我预期的那样工作。任何人都可以。

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

1 个答案:

答案 0 :(得分:2)

Han unification包含来自CJK的多个代码点。由于PCRE允许Unicode categories使用\p令牌,因此您可以将大多数中文字符与\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";
    }
?>

DEMO

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