我正在创建一个用于检测表情符号的类,并使用以下内容来检测:)
个表情符号,包括它们的各种变体(=], =), [=, [:,
等),但它不起作用我可以&#39为我的生活弄清楚出了什么问题。我在JSFiddle中测试它。
var DetectEmoticons = {
countHappy: function(data) {
var pattern = new RegExp("[:/=]-?[]/)] | [[/(]-?[:/=]", "g");
var count = (data.match(pattern) || []).length;
return count;
}
}
alert(DetectEmoticons.countHappy("=)"));
答案 0 :(得分:6)
[:=;]-?[)(|\\/\]\[]|[)(|\\/\]\[]-?[:=;]
这看起来像是一场邪恶的混乱,直到你打破它:
[:=;]
匹配一个:或一个=或一个;
[)(|\\/\]\[]
匹配一个),(,|,\(反斜杠,因为它是元字符),/,](反斜杠,因为它是元字符)或[(反斜杠,因为它是元字符)。(我们不需要反斜杠)或(因为它们不是字符类中的元字符)。
中心的|
表示'我左边的比赛或者我的比赛'然后我会写相同的两个角色类,但反过来匹配方向相反的笑脸。
我认为正则表达式的问题在于:
[]/)]
您忘记使用]
转义第一个\
,因此将其视为过早结束字符类。
另一个问题是你认为正斜杠/
被用来逃避。不是,\
用于逃避,/
在正则表达式中没有特殊含义。