Функция замены Javascript (регулярное выражение)

#javascript #regex #replace

#javascript #регулярное выражение #заменить

Вопрос:

Я думаю, что мне нужно регулярное выражение.

допустим, у меня есть переменная, содержащая следующий текст:

 var texty_texy = "Title:<br />Hey there,<br />I'm a simple text.";
  

Как мне определить, есть ли "Title:<br />" в моем var (конечно, «Заголовок» может быть изменен на "Tuna:<br />" или что-то еще)
и как мне заменить его на:

 <div class='title'>Title:</div>Hey there,<br />I'm a simple text.
  

Ответ №1:

Вы можете использовать группы в своем регулярном выражении, окружая части с помощью () .

Это означает, что она будет соответствовать только в том случае, если все части будут найдены, но также сохранит результаты. Итак, /^(w*)(:)/ будет искать Title: и разделится на $ 1 = Title и $ 2 = :<br /> . Но в случае, когда вам нужно захватить только одну часть, вы можете использовать упрощенное выражение: /^( w*):/

Затем при замене вы можете использовать эти переменные для добавления then к результатам, добавив $ 1 или $ 2 в текст.

 var text = "Title:<br />Hey there,<br />I'm a simple text.";

var result = text.replace(/^(w*):<br />/g, "<div class='title'>$1:</div>");
  

Результат:

 <div class='title'>Title:</div>Hey there,<br />I'm a simple text.
  

Комментарии:

1. Не совсем то, что я хотел. скрипт для определения, есть ли что-то похожее на шаблон заголовка («Текст: <br />», «Привет: <br />»)

2. Нет необходимости захватывать тег br, вы можете удалить круглые скобки, окружающие его. Но это будет работать.

3. но мой заголовок не обязательно будет «Title», но «:<br />» всегда будет присутствовать в переменной.

4. Это то, что мне нужно! — но я получил «Неожиданный квантификатор»

5. Я считаю : , что перед ним должна быть обратная косая черта: :