我正在创建一个类来检测表情符号,并有以下内容来检测:)表情符号,包括它们的各种变化(=], =), [=, [:,等),但它不起作用,我不能为我的生活弄清楚什么是错的.我在JSFiddle中测试它.
var DetectEmoticons = {
countHappy: function(data) {
var pattern = new RegExp("[:/=]-?[]/)] | [[/(]-?[:/=]", "g");
var count = (data.match(pattern) || []).length;
return count;
}
}
alert(DetectEmoticons.countHappy("=)"));
Run Code Online (Sandbox Code Playgroud)
[:=;]-?[)(|\\/\]\[]|[)(|\\/\]\[]-?[:=;]
这看起来像地狱中的邪恶混乱,直到你打破它:
[:=;] 匹配一个:或一个=或一个;
[)(|\\/\]\[] 匹配一个),(,|,\(反斜,因为它是一个元字符),/,](反斜杠,因为它是一个元字符)或[(反斜杠,因为它是一个元字符).(我们不需要反斜杠)或(因为它们不是字符类中的元字符).
将|在中心意思是"比赛给我留下和我的比赛权",然后我写了两个相同的字符类,但在反向匹配在方向相反的表情.
我认为你的正则表达式的问题在这里:
[]/)]
你忘了逃避第]一个,\所以它被视为过早地结束了角色类.
另一个问题是你认为正斜杠/是用来逃避的.它不是,\用于逃避,/在正则表达式中没有特殊含义.