Разбить строку при обнаружении двух регулярных выражений - PullRequest
2 голосов
/ 29 марта 2019

Мне нужно выражение регулярного выражения, чтобы разделить строку, когда появляется тег
или синтаксис двоеточия эмодзи.

Пример: "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 Ответ

2 голосов
/ 29 марта 2019

Вы можете объединить шаблоны с помощью оператора чередования |:

/\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 ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...