is/chinese.js

/**
 * 是否为中文
 * 中文范围:\u4E00-\u9FFF 基本的CJK统一表意文字区块。
 * 中文范围:\u3400-\u4DBF CJK统一表意文字扩展A区块。
 * 中文范围:\u20000-\u2A6DF CJK统一表意文字扩展B区块。
 * 中文范围:\u2A700-\u2B73F CJK统一表意文字扩展C区块。
 * 中文范围:\u2B740-\u2B81F CJK统一表意文字扩展D区块。
 * 中文范围:\u2B820-\u2CEAF CJK统一表意文字扩展E区块。
 * 中文范围:\uF900-\uFAFF CJK兼容表意文字区块。
 * 中文范围:\u2F800-\u2FA1F CJK兼容表意文字补充区块。
 * @alias yd_is_chinese
 * @category is
 * @returns {boolean} 返回是否是中文字符串
 * @author go522000 <https://github.com/go522000>
 * @summary 判断是否为中文字符串
 * @example
 * // 默认匹配纯中文
 * yd_is_chinese('中文'); // true
 * @example
 * // 第二个参数设置为 false,则匹配包含中文的字符串
 * yd_is_chinese('abc中文123', false); // true
 * @param {string} str 字符串
 * @param {boolean} isPure 是否纯中文
 */
export default (str, isPure = true) => {
    const pureChineseRegex = /^[\u{4E00}-\u{9FFF}\u{3400}-\u{4DBF}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B73F}\u{2B740}-\u{2B81F}\u{2B820}-\u{2CEAF}\u{F900}-\u{FAFF}\u{2F800}-\u{2FA1F}]+$/u;
    const mixedChineseRegex = /[\u{4E00}-\u{9FFF}\u{3400}-\u{4DBF}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B73F}\u{2B740}-\u{2B81F}\u{2B820}-\u{2CEAF}\u{F900}-\u{FAFF}\u{2F800}-\u{2FA1F}]/u;

    return isPure ? pureChineseRegex.test(str) : mixedChineseRegex.test(str);
};