Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение часть 2 (https://javascript.ru/forum/misc/19304-regulyarnoe-vyrazhenie-chast-2-a.html)

розовый слоник 01.08.2011 11:53

Регулярное выражение часть 2
 
Задача оставить только те слова где на конце присутствует буква 'w' делаю вот так и все работает на ура

var a = ''
function replacer(str, p1, p2, offset, s) {
	a += p1 + " ";
}
		
"hfjgw g fj gdw r gf dgwf dgfw sdfg dfg agfdgdf gww gw gfd sg s ggfdfgdw ".replace(/(\b\w+w\b)/g, replacer)

alert(a);


но если я хочу сделать это в две строчки то работать это все отказывается под предлогом что $1 не функция

a = "hfjgw g fj gdw r gf dgwf dgfw sdfg dfg agfdgdf gww gw gfd sg s ggfdfgdw ".replace(/(\b\w+w\b)/g, $1 + ' ')

alert(a);


в чем может быть проблема?

B@rmaley.e><e 01.08.2011 12:03

Цитата:

Сообщение от розовый слоник
в чем может быть проблема?

В непонимании разницы между переменной и строковой константой.

розовый слоник 01.08.2011 12:08

ааа кажется понял

розовый слоник 01.08.2011 12:14

ок с эти разобрался но вот почему все же не работает но теперь пишет что не найдено?
хотя там стоят скобки и по моему мнению $1 должна равняться совпадению в строке

розовый слоник 01.08.2011 12:33

все понял) эт я сам туплю))

Sweet 01.08.2011 12:47

Почему .replace? .match же уместнее.

scuter 01.08.2011 23:07

может в 2 репласа,
'hfjgw g fj gdw r gf dgwf dgfw sdfg dfg agfdgdf gww gw gfd sg s ggfdfgdw '.replace(/(\b\w+w\b)/gim, ">$1<").replace(/(<.*?>|^.*?>|<.*?$)/gim, " ");

Gozar 01.08.2011 23:13

scuter,
а может не стоит делать в два реплейса то, что можно сделать в один?

Sweet 01.08.2011 23:19

.match(/\b\w+w\b/g).join(" ");

scuter 01.08.2011 23:43

Цитата:

Сообщение от Gozar (Сообщение 116713)
scuter,
а может не стоит делать в два реплейса то, что можно сделать в один?

ну кому как хочется тот так и делает.


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