Я ожидал найти ответ на типичную проблему с регулярными выражениями.
Многие примеры использования RegEx replace предполагают, что вы знаете шаблон, который хотите заменить. Отлично подходит для обучения, но не является типичным (ИМО). См. Школы w3 и MDN. Если он находится на странице MDN, укажите его.
В моей последней проблеме у меня есть html файл с идентификаторами uniq в строке, поэтому я могу выполнить эту простую замену. Синтаксис строк, которые мне нужно изменить, показаны ниже. Я могу поместить в файл уникальную строку, чтобы найти нужную строку для обновления.
<span id="lastModified">2018-10-26</span>
<span id="builtBy">Pat</span>
Мне нужно найти строку с id="lastModified"
и изменить дату.
Мне нужно найти строку с id="builtBy"
и изменить дату.
Я попробовал несколько разных вещей. Один
var res = str.replace(/id="lastModified".*>(.*)<.span>/, newDate );
Я думал, что по умолчанию может быть изменение данных, сопоставленных в parens (нет, это не работает). См. Пример кода JSFiddle из того, что я пытался, который не работал.
ПРИМЕЧАНИЕ. В моем случае я пытаюсь понять это, потому что для простой замены строки с использованием gulp-replace, но это действительно проблема соответствия шаблону javascript и замены, поэтому я не привожу gulp-replace в этот вопрос, кроме как упоминать об этом,
ПРИМЕЧАНИЕ. В моем случае этот код не выполняется в браузере, поэтому типичная манипуляция DOM не будет работать.
Другие вопросы, которые я нашел (но не ответили на мой вопрос), были следующими:
Вы можете использовать это регулярное выражение для соответствия вашей первой строке:
/(<span id="lastModified">)(.*?)(</span>)/
Он в основном соответствует буквально тексту и фиксирует его в трех группах, который затем используется в шаблоне замены, который может быть:
$12018-10-26$3
Сначала он заменяет $1
(первая согласованная группа), затем ваша дата (которую вы хотите получить из переменной) и, наконец, $3
которая является конечным диапазоном.
var res = str.replace(/(<span id="lastModified">)(.*?)(</span>)/, '$12018-1026$3');
.replace
, а не в строку