Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена в строке исключая указанные символы и дефис. (https://javascript.ru/forum/misc/28698-zamena-v-stroke-isklyuchaya-ukazannye-simvoly-i-defis.html)

SiZE 30.05.2012 12:35

Замена в строке исключая указанные символы и дефис.
 
Получаю строку, например, "as-@#/ss123=-фыва". Произвожу в ней замену

var text = text.replace( /[^a-zA-Z0-9_]/, '_' );

Мне надо еще добавить внутрь квадратных скобок минус «-», т.е. так [^a-zA-Z0-9_-]. Но внутри скобок он означает диапазон. Как быть? :help:

Amphiluke 30.05.2012 12:39

Экранировать бэкслешем. Хотя символ «-» в конце группировки [], вроде, правильно интерпретируется, и без экранирования

SiZE 30.05.2012 12:43

Спасибо. Я еще добавил флажок g. Т.к не вкурил почему на выходе бэкслеш в передаваемой строке остался. А оказалось была произведена только одна замена и все.

Deff 30.05.2012 12:44

Цитата:

Сообщение от SiZE
Мне надо еще добавить внутрь квадратных скобок минус «-», т.е. так [^a-zA-Z0-9_-]. Но внутри скобок он означает диапазон. Как быть?

*Не диапазон \-

=> http://javascript.ru/basic/regular-expression+

nerv_ 30.05.2012 15:53

Цитата:

Сообщение от Amphiluke
Экранировать бэкслешем. Хотя символ «-» в конце группировки [], вроде, правильно интерпретируется, и без экранирования

в конце не уверен, в начале да, при условии, что это не отрицающие скобки. А вообще [^-\W] достаточно в вашем случае. Оно эквивалентно [^-A-Za-z0-9_].

короче я попутал, но истина где-то рядом. Голова болит, ничего не соображает...

правильный ответ: [^-\w]


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