Преобразование уценки WhatsApp в теги HTML - PullRequest
1 голос
/ 01 июля 2019

Мне нужно преобразовать разметку WhatsApp в теги HTML.

Например.

*Bold* to <b>Bold</b>
_Italic_ to <i>Italic</i>

Я хочу использовать регулярные выражения для захвата слов в строке.

Здесьэто ссылка, содержащая тестовый пример, и мой лучший выстрел в него.https://regexr.com/4gnqr

Регулярное выражение должно охватывать *bold* и *some more bold text*.

Ответы [ 2 ]

2 голосов
/ 01 июля 2019

Вы можете просто использовать эти два выражения,

(\*)([^*]+?)(\*)

(_)([^_]+?)(_)

и замените его на:

<b>$2</b>

<i>$2</i>

и это может решить проблему.

Демо 1

Демо 2

Пример * * тысяча двадцать-одна const regex = /(_)([^_]+?)(_)/gs; const str = `*Bold* to <b>Bold</b> _Italic_ to <i>Italic</i> This is a *bold* text, along with *some more bold text*. We also have some _italic_ text.`; const subst = `<i>$2</i>`; const result = str.replace(regex, subst); console.log(result);

1 голос
/ 01 июля 2019

Вы можете использовать простое регулярное выражение:

const regex = /\*(.*?)\*/g;
const test = "*bold*, not bold, *bold again*";
const result = test.replace(regex , '<strong>$1</strong>')
console.log(result)
  • Вы хотите от * до следующего * и сохранять все между: *(.*?)*
    (без ? это будетпереходите от первого к последнему, он называется (не) жадным).
  • Это не работает, потому что * имеет использование, поэтому вы должны выйти -> \*.
  • /g означает «глобальный», например, заменить все вхождения (в отличие только от первого).
  • $1 содержит наше первое (и только в этом случае) значение.

Версия с подчеркиванием работает так же, и не нуждается в экранировании, как *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...