PHP正则表达式判断字符串是否全为中文,或全为字母,或全为数字,又或者是它们的任意组合,一般用于新用户注册环节,判断输入的用户名是否合法。

代码如下(utf-8编码):

/**
 * 判断字符串是否全为中文、字母、数字或任意组合
 * @param string $str 
 * @return boolean
 */
function isChineseLetterNumber($str) {
    if (preg_match('/^[\x{4e00}-\x{9fa5}a-z0-9]+$/iu', $str)) {
        return true;
    } else {
        return false;
    }
}

其中,[\x{4e00}-\x{9fa5}] 是汉字的字符编码区间。

以下测试举例:

var_dump(isChineseLetterNumber('小明'));      //true 纯中文
var_dump(isChineseLetterNumber('9527'));      //true 纯数字
var_dump(isChineseLetterNumber('Michael'));   //true 纯字母
var_dump(isChineseLetterNumber('lee9527'));   //true 字母+数字
var_dump(isChineseLetterNumber('小明boss'));  //true 中文+字母
var_dump(isChineseLetterNumber('小明by007')); //true 中文+字母+数字
var_dump(isChineseLetterNumber('xyz-32312')); //false 包含减号“-”
var_dump(isChineseLetterNumber('abc_16232')); //false 包含下划线“_”
var_dump(isChineseLetterNumber('张三!'));     //false 包含标点符号“!”
var_dump(isChineseLetterNumber('张三。123')); //false 包含标点符号“。”