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

93

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

Например:

string = "img_realtime_tr~ading3$"

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

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

user1049997
источник
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