util-helpers
Version:
40 lines (36 loc) • 1.75 kB
JavaScript
;
var ut2 = require('ut2');
var native = require('./utils/native.js');
var chineseDictionary = {
chineseBasic: '[\u4e00-\u9fa5]',
chineseExtend: '[\u9ea6-\u9fff]',
chineseExtend2: '[\uF900-\uFAD9]',
chineseExtendA: '[\u3400-\u4DBF]',
chineseExtendB: "[\uD840\uDC00-\uD869\uDEDF]",
chineseExtendC: "[\uD869\uDF00-\uD86D\uDF38]",
chineseExtendD: "[\uD86D\uDF40-\uD86E\uDC1D]",
chineseExtendE: "[\uD86E\uDC20-\uD873\uDEA1]",
chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]",
chineseExtendG: "[\uD880\uDC00-\uD884\uDF4A]",
chineseExtendH: "[\uD884\uDF50-\uD888\uDFAF]",
chineseExtendI: "[\uD87A\uDFF0-\uD87B\uDE5D]"
};
var looseChineseRegExp = chineseDictionary.chineseBasic + '+';
var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
var chineseWithExtend = '(?:' + native.objectValues(chineseDictionary).join('|') + ')';
var looseChineseExtendRegExp = chineseWithExtend + '+';
var chineseExtendRegExp = '^' + chineseWithExtend + '+$';
var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
function isChinese(value, options) {
if (options === void 0) { options = {}; }
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.useExtend, useExtend = _b === void 0 ? false : _b;
var valueStr = ut2.toString(value);
var basicRegExp = loose ? looseChineseRegExp : chineseRegExp;
var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
var hasExtend = useExtend && supportRegExpUnicode;
var resultRegExp = hasExtend ? extendRegExp : basicRegExp;
var flag = hasExtend ? 'u' : native.nativeUndefined;
var reg = new RegExp(resultRegExp, flag);
return reg.test(valueStr);
}
module.exports = isChinese;