Замените специальные символы в строке на _ (подчеркивание)


93

Я хочу удалить специальные символы из строки и заменить их _символом.

Например:

string = "img_realtime_tr~ading3$"

Результирующая строка должна иметь вид «img_realtime_tr_ading3_»;

Мне нужно заменить эти символы: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
почему это закрыто, это хороший вопрос. Как заменить специальные символы, полезные при создании удобных для SE URL. К счастью, еще кто-то ответил на это.
велосипед

1
Чрезвычайно узкая ситуация, которая обычно не применима к мировой аудитории Интернета? Скажем так, по крайней мере 108 человек думали иначе.
Антуан Пеллетье,

1
Закрыто ? Однако довольно полезно при очистке грязных данных.
Standaa Reinstate Monica

Это не должно быть закрыто
Mustkeem K

Ответы:


210
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g,'_');

В качестве альтернативы, чтобы изменить все символы, кроме цифр и букв, попробуйте:

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

Круто! !однако отсутствует в первой строке.
ProblemsOfSumit

4
Вторая строка очень полезна во многих случаях.
mastazi

\-а =также отсутствует :)
Симо Д'ло Мафуксвана

2
Если у вас есть специальный символ перед пробелом, например, у hello! wordвас будет два символа подчеркивания подряд, вот hello__wordтак, вы можете сделать это:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz

3
@DannyFeliz или даже string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');если вы не знаете, сколько подряд подчеркиваний подряд
falkodev

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.