遇到两个正则表达式时会拆分字符串

时间:2019-03-28 22:48:38

标签: javascript regex

当需要封装
标记或表情符号冒号sintaxe时,我需要一个正则表达式来拆分字符串。

示例: "hello here comes emoji :grinning: and a line break <br> one more emoji :heart:"

我想完成的是一个像这样的数组:

[
 "hello here comes emoji",
 ":grinning:",
 "and a line break",
 "<br>",
 "one more emoji",
 ":heart:"
]

我有正则表达式可以单独执行此操作:

分割为表情符号split(/(:[^\s:]+(?:::skin-tone-[2-6])?:)/)

在br split(/(<br>)/g)上拆分

我想要的是一种将两者结合在一起的方法。

1 个答案:

答案 0 :(得分:2)

您可以使用|交替运算符加入模式:

/\s*(:[^\s:]+(?:::skin-tone-[2-6])?:|<br>)\s*/

请注意,我在两边都添加了\s*来修剪空白。

JS演示:

var s = "hello here comes emoji :grinning: and a line break <br> one more emoji :heart:";
var reg = /\s*(:[^\s:]+(?:::skin-tone-[2-6])?:|<br>)\s*/;
console.log(s.split(reg).filter(x => x.trim().length !=0 ));