#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. Я считаю
:
, что перед ним должна быть обратная косая черта::