正则表达式中的表情符号

时间:2015-02-10 18:25:06

标签: regex emoji emoticons

我必须找到并替换给定文本中的所有Facebook风格表情符号,但找不到正确的正则表达式。根据经验,必须匹配用户有意输入的所有表情符号,不匹配可以是地址,数字,运输代码,链接,随机文本ecc的一部分。 ..

这一个(^|\s)(:D|:\/)(\s|\W|$)不适用于我测试的所有案例(标有"must match""must not match"):

:D "must match" Sample text for testing:
abcdefghijkl:Dm "must not match" nopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789 +-:D.,! "must not match" @#$%^&*();\/|<>"' "must match" :/.
12345 :/-98.7 "must not match" 3.141 ://.6180 "must not match" 9,000 +42
555.123.4567    :D+1-(80 "must not match" :D555-2468: "must not match"
foo@demo.net    "must match" bar.ba@test.co.uk :D
:/ "must match" http://"must not match"foo.co.uk/ "must match" :D?
http://regexr.com/foo.html?q=bar
:D
:/
:D
:D
"must all 4 match"

实时测试用例:http://regexr.com/3ad1j

我还尝试了(^|\s|\B)(:D|:\/)(\s|\B|\b|$),它匹配所有"must match",但也匹配了"must not match" ...

为了举例,这个正则表达式只有两个表情符号,在实际情况下我有一个50个表情符号的数组来查找和替换相应的表情符号。

更新:新的测试用例http://regexr.com/3ad6i包含已更新的(^|\s)(:D|:\/)(?=\s|[^0-9A-Za-z+-]|$)正则表达式,仍有一些"must not match"可以消除。

更新2:使用更新的(^|\s)(:D|:\/)(?=\s|[^"-(*+\-/->@-~]|$)正则表达式更新了测试用例http://regexr.com/3ad6i,工作正常,我可以通过某种方式改进吗?

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

(^|\s)(:D|:\/)(?=\s|[^[:alnum:]+-]|$)

Online demo