在javascript中使用正则表达式检测表情符号

时间:2013-06-06 05:08:01

标签: javascript regex

我正在创建一个用于检测表情符号的类,并使用以下内容来检测:)个表情符号,包括它们的各种变体(=], =), [=, [:,等),但它不起作用我可以&#39为我的生活弄清楚出了什么问题。我在JSFiddle中测试它。

var DetectEmoticons = {
    countHappy: function(data) {
        var pattern = new RegExp("[:/=]-?[]/)] | [[/(]-?[:/=]", "g");
        var count = (data.match(pattern) || []).length;
        return count;
    }
}
alert(DetectEmoticons.countHappy("=)"));

1 个答案:

答案 0 :(得分:6)

[:=;]-?[)(|\\/\]\[]|[)(|\\/\]\[]-?[:=;]

这看起来像是一场邪恶的混乱,直到你打破它:

[:=;]匹配一个:或一个=或一个;

[)(|\\/\]\[]匹配一个),(,|,\(反斜杠,因为它是元字符),/,](反斜杠,因为它是元字符)或[(反斜杠,因为它是元字符)。(我们不需要反斜杠)或(因为它们不是字符类中的元字符)。

中心的|表示'我左边的比赛或者我的比赛'然后我会写相同的两个角色类,但反过来匹配方向相反的笑脸。

我认为正则表达式的问题在于:

[]/)]

您忘记使用]转义第一个\,因此将其视为过早结束字符类。

另一个问题是你认为正斜杠/被用来逃避。不是,\用于逃避,/在正则表达式中没有特殊含义。

相关问题