Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JavaScript: RegExp; string.replace()

253
21 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Проблема:
есть строка. есть выражение для замены чего и на что
 
Код:
en_start = nRegExpEscape(en_start);
en_finish = nRegExpEscape(en_finish);
var expr = new RegExp(выражение, "gi");
var repstr = en_rstart + "$1" + en_rfinish;            
text = text.replace(expr, repstr);

en_start = например, "START"
en_finish = "FINISH"
en_rstart = "repl"
en_rfinish = "end"
text = например, "START<str>FINISH<noreplace>START<str2>FINISH"

Теперь самое интересное:
выражение - пробовал:
 
Код:
en_start + "(.*)" + en_finish
en_start + "([^(" + en_finish + ")]*)" + en_finish
en_start + "(.*)(?=" + en_finish + ")" + en_finish
// самое извращение :crazy:
en_start + "([^(" + en_finish + ")]*)(?=" + en_finish + ")" + en_finish

Все выдают
repl<str>FINISH<noreplace>START<str2>end
вместо
repl<str>end<noreplace>repl<str2>end

Т.е, заменяет первый и поседний нахождения START и FINISH. как сделать, что бы заменялось только первое и первое вхождения строк?

p.s: уже третий день бьюсь, в выражениях я не очень силен
253
21 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Вообще-то говоря, [^(" + en_finish + ")]* то же самое что и [^" + en_finish + "]* (без скобок). т.е если в строке не встречается ни одного символа из en_finish, она заменяется на ура. а вот если там будет, например, "fishni", все летит
253
21 января 2007 года
Proger_XP
1.5K / / 07.08.2004
Вот оно!
http://www.regular-expressions.info/reference.htm
Странно, но в мане от Мозиллы не было написано про "lazy ?". Если кому-нибудь опять такая проблема встретится - выражение должно быть - var expr = new RegExp(en_start + "(.*?)" + en_finish, "gi")
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог