Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение частей строки, заключенных между двумя подстроками (https://javascript.ru/forum/misc/37001-poluchenie-chastejj-stroki-zaklyuchennykh-mezhdu-dvumya-podstrokami.html)

rgl 05.04.2013 18:05

Цитата:

Сообщение от Aetae (Сообщение 244196)
Ну тут какбэ и indexOf обойтись можно.)

Цитата:

Сообщение от Aetae (Сообщение 244327)
// ......................
        return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
// ......................

:D :D :D :D :D

А если серьезно, позволю себе пару комментариев:
1. Внутри классов почти ничего маскировать не нужно. Правда, иногда для этого все должно быть на своих местах. Не нужно маскировать скобку [ если она в самом начале или после символа отрицания ^, не нужно маскировать ^ если ставить этот символ не в самое начало, не нужно маскировать минус, если ставить его в начале или в конце (но начало уже занято [ поэтому ставим в конце), остальные символы (кроме \ и возможно /) просто маскировать не нужно. Поэтому в итоге получаем:
//      return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
        return str.replace(/[][\/{}()*+?.\\^$|]/g, "\\$&");

2. Вариант searchBetweenReg полагается на то, что split добавляет в результирующий массив подгруппы (т.е. кусочки в скобочках) а это может быть так, а может и не быть, т.е. получается непереносимо. Значит остается первый и третий вариант.

Deff 05.04.2013 23:40

var txt = "привет меня зовут Вася. привет и меня тоже зовут Вася";
txt = txt.replace(/Вася(?:.(?!привет)*).привет/img,'=ВасПрив=')
txt = txt.split(/=ВасПрив=|привет|Вася/);
txt.splice(0,1);
txt.splice(-1,1)
alert(txt)

rgl 06.04.2013 00:31

Цитата:

Сообщение от Deff (Сообщение 244478)
var txt = "привет меня зовут Вася. привет и меня тоже зовут Вася";
txt = txt.replace(/Вася(?:.(?!привет)*).привет/img,'=ВасПрив=')
txt = txt.split(/=ВасПрив=|привет|Вася/);
txt.splice(0,1);
txt.splice(-1,1)
alert(txt)

var txt = "привет меня зовут Вася. (хи-хи) привет и меня тоже зовут Вася";
txt = txt.replace(/Вася(?:.(?!привет)*).привет/img,'=ВасПрив=')
txt = txt.split(/=ВасПрив=|привет|Вася/);
txt.splice(0,1);
txt.splice(-1,1)
alert(txt)

Deff 06.04.2013 00:37

var txt = "привет меня зовут Вася. (хи-хи) привет и меня тоже зовут Вася";
txt = txt.replace(/Вася(?:.(?!привет))*.привет/img,'=ВасПрив=')
txt = txt.split(/=ВасПрив=|привет|Вася/);
txt.splice(0,1);
txt.splice(-1,1)
alert(txt)

rgl 06.04.2013 00:49

В любом случае - непереносимо. Напоминаю:
http://javascript.ru/forum/misc/3600...tml#post238235

Я к тому, что
txt.splice(0,1);
txt.splice(-1,1)
может быть нужно, а может и нет

Aetae 07.04.2013 08:24

split в ie<8 лечится как и всё остальное - подключением эмуляции.


Часовой пояс GMT +3, время: 21:57.