Сообщение от s_drud
|
Они не работают.
|
Таки работают.
Сообщение от s_drud
|
или вообще не понимаю
|
Скорее всего...
Сообщение от s_drud
|
подскажите кто разбирается
|
Обратимся к первоисточнику...
Цитата:
|
(x)
Находит x и запоминает. Это называется "запоминающие скобки". Например, /(foo)/ найдет и запомнит 'foo' в "foo bar." Найденная подстрока хранится в массиве-результате поиска или в предопределенных свойствах объекта RegExp: $1, ..., $9.Кроме того, скобки объединяют то, что в них находится, в единый элемент паттерна. Например, (abc)* - повторение abc 0 и более раз.
|
Цитата:
|
(?:x)
Находит x, но не запоминает найденное. Это называется "незапоминающие скобки". Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp.Как и все скобки, объединяют находящееся в них в единый подпаттерн.
|
http://javascript.ru/RegExp
Т.е. это те же скобки, только (х) "Найденная подстрока хранится в массиве-результате поиска или в предопределенных свойствах объекта RegExp: $1, ..., $9."
При использовании (?:х) "Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp."
Вот некая иллюстрация разницы
var str = "1234567890";
var newstr = str.match(/(?:34)/gi);
alert(newstr);
newstr = str.match(/(34)/gi);
alert(newstr);
alert(str.replace(/(34)/gi,'-$1-'));
alert(str.replace(/(?:34)/gi,'-$1-'));