正则表达式查找带有冒号和肤色的表情符号名称
Regex to find emoji names with colon and skintone
我正在为我的解析器使用 EmojiMart。
我看过这个 但它似乎与我的不同。
所以我需要 return 表情符号名称或 :code:
以便他们能够对其进行解码。
例如我有这个文本:
:+1::skin-tone-6::man-pouting:Hello world:skin-tone-
6:lalalalla:person_with_pouting_face: :poop::skin-tone-11: mamamia
:smile: :skin-tone-6:
它应该匹配整个 :+1::skin-tone-6:
而不是单独的 :+1:
、:skin-tone-6::
- 仅当它们之间没有 space 时。 (注意 :smile:
和 :skin-tone-6:
之间的 space )
条件:
如果肤色是 2-6
,它应该只匹配 :code::skintone:
如果我这样做 str.split(regex)
这是我的预期结果(数组):
- :+1::skin-tone-6:
- :man-pouting:
- Hello world
- :skin-tone-6:
- lalalalla
- :person_with_pouting_face:
- :poop:
- :skin-tone-11:
- mamamia
- :smile:
- :skin-tone-6:
您可以将 String#split()
与
一起使用
/(:[^\s:]+(?:::skin-tone-[2-6])?:)/
正则表达式。见 regex demo.
详情
:
- 冒号
[^\s:]+
- 除空格和 :
以外的 1+ 个字符
(?:::skin-tone-[2-6])?
- 一个可选的序列
::skin-tone-
- 文字子串
[2-6]
- 从 2
到 6
的数字
:
- 一个冒号。
JS 演示:
var s = ":+1::skin-tone-6::man-pouting:Hello world:skin-tone-6:lalalalla:person_with_pouting_face: :poop::skin-tone-11: mamamia :smile: :skin-tone-6:";
var reg = /(:[^\s:]+(?:::skin-tone-[2-6])?:)/;
console.log(s.split(reg).filter(x => x.trim().length !=0 ));
.filter(x => x.trim().length !=0 )
从生成的数组中删除所有空白项。对于 ES5 及更早版本,使用 .filter(function(x) { return x.trim().length != 0; })
.
我正在为我的解析器使用 EmojiMart。
我看过这个
所以我需要 return 表情符号名称或 :code:
以便他们能够对其进行解码。
例如我有这个文本:
:+1::skin-tone-6::man-pouting:Hello world:skin-tone-
6:lalalalla:person_with_pouting_face: :poop::skin-tone-11: mamamia
:smile: :skin-tone-6:
它应该匹配整个 :+1::skin-tone-6:
而不是单独的 :+1:
、:skin-tone-6::
- 仅当它们之间没有 space 时。 (注意 :smile:
和 :skin-tone-6:
之间的 space )
条件:
如果肤色是 2-6
,它应该只匹配:code::skintone:
如果我这样做 str.split(regex)
这是我的预期结果(数组):
- :+1::skin-tone-6:
- :man-pouting:
- Hello world
- :skin-tone-6:
- lalalalla
- :person_with_pouting_face:
- :poop:
- :skin-tone-11:
- mamamia
- :smile:
- :skin-tone-6:
您可以将 String#split()
与
/(:[^\s:]+(?:::skin-tone-[2-6])?:)/
正则表达式。见 regex demo.
详情
:
- 冒号[^\s:]+
- 除空格和:
以外的 1+ 个字符
(?:::skin-tone-[2-6])?
- 一个可选的序列::skin-tone-
- 文字子串[2-6]
- 从2
到6
的数字
:
- 一个冒号。
JS 演示:
var s = ":+1::skin-tone-6::man-pouting:Hello world:skin-tone-6:lalalalla:person_with_pouting_face: :poop::skin-tone-11: mamamia :smile: :skin-tone-6:";
var reg = /(:[^\s:]+(?:::skin-tone-[2-6])?:)/;
console.log(s.split(reg).filter(x => x.trim().length !=0 ));
.filter(x => x.trim().length !=0 )
从生成的数组中删除所有空白项。对于 ES5 及更早版本,使用 .filter(function(x) { return x.trim().length != 0; })
.