Javascript 检查字符串是否包含日文/中文字符

Javascript 检查字符串是否包含日文/中文字符,javascript,regex,Javascript,Regex,我需要一种方法来检查字符串是否包含日语或中文文本 目前我使用的是: string.match(/[\u3400-\u9FBF]/); 但它不适用于此,例如:ディアボリックラヴァーズ或バッテリー 你能帮我吗 谢谢通常用于中文和日文文本的Unicode字符范围为: U+3040-U+30FF:平假名和片假名(仅日语) U+3400-U+4DBF:CJK统一表意文字扩展A(中文、日文和韩文) U+4E00-U+9FFF:CJK统一表意文字(中文、日文和韩文) U+F900-U+FAFF:CJK兼容

我需要一种方法来检查字符串是否包含日语中文文本

目前我使用的是:

string.match(/[\u3400-\u9FBF]/);
但它不适用于此,例如:
ディアボリックラヴァーズ
バッテリー

你能帮我吗


谢谢

通常用于中文和日文文本的Unicode字符范围为:

  • U+3040-U+30FF:平假名和片假名(仅日语)
  • U+3400-U+4DBF:CJK统一表意文字扩展A(中文、日文和韩文)
  • U+4E00-U+9FFF:CJK统一表意文字(中文、日文和韩文)
  • U+F900-U+FAFF:CJK兼容表意文字(中文、日文和韩文)
  • U+FF66-U+FF9F:半宽片假名(仅日语)
作为正则表达式,这将表示为:

/[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/
这并不包括中文和日文文本中出现的每个字符,但任何典型中文或日文文本的重要部分都将主要由这些范围的字符组成


请注意,此正则表达式也将匹配包含的韩文文本。这是不可避免的结果。

swift 4将模式更改为和NSRegularExpression进行替换,可能会帮助某些人

[\u{3040}-\u{30ff}\u{3400}-\u{4dbf}\u{4e00}-\u{9fff}\u{f900}-\u{faff}\u{ff66}-\u{ff9f}]
扩展方法

mutating func removeRegexMatches(pattern: String, replaceWith: String = "") {
        do {
            let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)
            let range = NSMakeRange(0, self.count)
            self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith)
        } catch {
            return
        }
    }

    mutating func removeEastAsianChars() {
        let regexPatternEastAsianCharacters = "[\u{3040}-\u{30ff}\u{3400}-\u{4dbf}\u{4e00}-\u{9fff}\u{f900}-\u{faff}\u{ff66}-\u{ff9f}]"
        removeRegexMatches(pattern: regexPatternEastAsianCharacters)
    }
例如,字符串结果是ABC

"ABC検診センター".removeEastAsianChars()

你可以使用这个代码,它对我有用

let str = "渣打銀行提供一系列迎合你生活需要嘅信用卡";
//let str = "SGGRAND DING HOUSE 4GRAND DING HOUSE";
const REGEX_CHINESE = /[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/;
const hasChinese = str.match(REGEX_CHINESE);
if(hasChinese){
  alert("Found");
}
else{
  alert("Not Found");
}

如果日语可以与
[一-龯]和带有
[\u4E00-\u9FFF\u3400-\u4DFF]
的中文,如果需要,请尝试使用
(/[一-龯\u4E00-\u9FFF\u3400-\u4DFF]/.test({警报(“包含日语或中文字符!”);}
@WiktorStribiżew No,这是不正确的。日语包含CJK范围以外的字符。好的,将JA替换为。这更奇怪……您包含的一些字符,如U+2605和U+2606,与中文或日语完全无关。(它们是★ 及☆.)@Daskwuff:请参阅:日语文本中常用的非日语标点符号/格式字符。是的,可能足够了。要将韩语字符添加到正则表达式中,请使用以下命令:
\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f\u3131-\uD79D