Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   поиск подстроки (https://javascript.ru/forum/misc/30834-poisk-podstroki.html)

zebulun 17.08.2012 15:58

поиск подстроки
 
Никак не вьеду, есть строка, в которой нужно найти подстроку, хранящуюся в переменной, и вырезать, проблема в том, что подстрока может выглядеть так
str

, а может так

', '+str

, т.е. запятая с пробелом может быть может не быть, пытаюсь сделать как то так
var expr = new RegExp("?(, )("+str+")/gi");

, но не могу разобраться в синтаксисе, может здесь и не нужно использовать регулярки?

Deff 17.08.2012 16:08

str=', а может так'
strOut = str.split(", ").join('')
alert('>'+strOut+'<')

zebulun 17.08.2012 16:19

так а мне нужно убрать из строки подстроку содержащую обязательно str и необязательно ', '

Deff 17.08.2012 16:34

Цитата:

Сообщение от zebulun
так а мне нужно убрать из строки подстроку содержащую обязательно str и необязательно ', '

str='str\
\
\
 , , а может так';
strOut = str.split(", ").join('').replace(/^str\s*/g,'')
alert('>'+strOut+'<')

zebulun 17.08.2012 16:49

мне ваше "а может так" нужно тоже убрать из строки(вместе с частью ", ", если она имееется)

bes 17.08.2012 17:07

var text = 'str ha ,str';
alert(text + '\n' + text.replace(/\,?str/g, 'ha'));

PS: или объясняйте подробнее и понятнее

zebulun 17.08.2012 17:43

всё почти так, только, где у вас запятая, у меня ",пробел", и если вместо символов str надо подставить переменную var str='что-то', то как это описать в регулярке?

zebulun 17.08.2012 17:47

про пробел забудьте, хотя интересно все равно

bes 17.08.2012 17:49

добавить пробел после запятой

var text = 'str ha , str';
alert(text + '\n' + text.replace(/,?\s?str/g, 'ha'));

что есть регулярное выражение - шаблон текста, всё что под этот шаблон в искомой строке находится то и возвращается (без флагов - первое совпадение с шаблоном и т.п. см. в учебнике темы по регулярке)

zebulun 17.08.2012 17:54

вы экранируете запятую?


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