Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > регулярка


Автор: bars80080 28.10.2008, 11:42
как всегда туплю с регулярками

хочу в новую строку получить текст очищенный от символов не удовлетворяющих условию
в данном случае хочу удалить всё не являющееся цифрами и буквами:

Код

pnr1 = pnr.replace(/[^A-Za-zА-Яа-яЁё0-9]/,'');


что-то не пашет

Добавлено через 3 минуты и 28 секунд
ух ты, оказывается работает, но заменяет только по одному символу. а как можно сразу все?

Автор: destrd 28.10.2008, 11:59
Подойдёт?
Код

str1 = str.replace(/([\D\W]|(_))+/,'');

дополнительно обрабатываем "_" потому что оно входит в \W и в первом условии не удалится.

Автор: Itsys 28.10.2008, 12:22
Цитата(bars80080 @  28.10.2008,  11:42 Найти цитируемый пост)
ух ты, оказывается работает, но заменяет только по одному символу. а как можно сразу все?

Насколько я помню, надо добавить в шаблон "g"
Код

pnr1 = pnr.replace(/[^A-Za-zА-Яа-яЁё0-9]/g,'');



Добавлено @ 12:23
ну и аналогично
Код

str1 = str.replace(/([\D\W]|(_))+/g,'');

Автор: destrd 28.10.2008, 13:07
Цитата(Itsys @  28.10.2008,  12:22 Найти цитируемый пост)
ну и аналогично
Код

str1 = str.replace(/([\D\W]|(_))+/g,'');


Да, глобально ещё надо

Автор: ksnk 28.10.2008, 14:04
destrd, а вот русские буквы  входят в \W smile

Автор: bars80080 28.10.2008, 15:38
да destrd, русские он выкидывает, пример Itsys работает как надо

всем спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)