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


93

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

Наприклад:

string = "img_realtime_tr~ading3$"

Отриманий рядок повинен виглядати як "img_realtime_tr_ading3_";

Мені потрібно замінити ці символи: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
чому це закрито, це хороше питання. Як замінити спеціальні символи, корисні при створенні URL-адрес, придатних для SE. На щастя, все-таки хтось відповів на це.
велосипед

1
Надзвичайно вузька ситуація, яка, як правило, не застосовується до світової аудиторії Інтернету? Ну, давайте просто скажемо, що принаймні 108 людей думають інакше.
Антуан Пеллетьє,

1
Зачинено ? Дуже корисно, коли зішкріб брудні дані.
Standaa Reinstate Monica

Це не слід закривати
Mustkeem K

Відповіді:


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

Або, щоб змінити всі символи, крім цифр і літер, спробуйте:

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

Класно! !у першому рядку відсутній.
ProblemsOfSumit

4
Другий рядок дуже корисний у багатьох випадках.
mastazi

\-а =також відсутній :)
Simo D'lo Mafuxwana

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.