.Заменить все после определенной точки - PullRequest
0 голосов
/ 16 февраля 2012
Lorem ipsum dolor sit amet consectetur adipisicing elit.

Можно ли использовать .replace, чтобы изменить все, кроме amet в предложении выше?

1 Ответ

9 голосов
/ 16 февраля 2012

Это так.

str.replace(/(amet).+$/, '$1FOO')

Если "amet" на самом деле содержит странные символы, вы должны 'regex' указать их: ., -, [ и т. Д.

РЕДАКТИРОВАТЬ
Объяснить регулярное выражение сложно.

  • (amet) => Захват буквального "амет".Захватите, потому что вы хотите сохранить эту часть для замены, потому что вы хотите заменить все после"amet".
  • .+ => Любой тип символов (.), но не менее одного (+).Если вы хотите по крайней мере 0, вы можете использовать * вместо +.
  • $ => конец темы (str).В этом случае это не нужно, потому что регулярное выражение является жадным и не остановится, пока вы не скажете это (и поскольку .+ никогда не прекратит сопоставление, конец - это конец)
  • $1 => Этоявляется заполнителем для «первого матча».В данном случае это всегда "amet", потому что мы соответствовали буквальному "amet".Если регулярное выражение является переменной, это $1 будет неизвестно (для чего оно существует).
  • FOO => Другой литерал (замена).Ваш вопрос включает в себя «... изменить все после ...», что, на мой взгляд, означает «заменить на "FOO"».

Достаточно ясно?Если нет, я был бы рад попытаться объяснить лучше.Всегда отличный ресурс (для молодых и старых, мудрых и не очень мудрых, профессионалов и начинающих): http://www.regular -expressions.info /

В заключение: регулярное выражениеУДИВИТЕЛЬНЫЙ .

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