문자열의 특수 문자를 _ (밑줄)로 바꿉니다.


92

문자열에서 특수 문자를 제거하고 _문자로 바꾸고 싶습니다 .

예를 들면 :

string = "img_realtime_tr~ading3$"

결과 문자열은 "img_realtime_tr_ading3_"과 같아야합니다.

해당 문자를 대체해야합니다. & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
이것이 왜 닫혀 있는지 좋은 질문입니다. SE 친화적 인 URL을 만들 때 유용한 특수 문자를 바꾸는 방법. 고맙게도 누군가가 대답했습니다.
자전거

1
전 세계 인터넷 사용자에게 일반적으로 적용되지 않는 매우 좁은 상황입니까? 그렇지 않다고 생각하는 사람들이 적어도 108 명이라고합시다.
Antoine Pelletier

1
닫혔습니까? 그래도 더러운 데이터를 스크랩 할 때 매우 유용합니다.
Standaa Reinstate Monica 2011

닫히면 안됩니다
Mustkeem K

답변:


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

또는 숫자와 문자를 제외한 모든 문자를 변경하려면 다음을 시도하십시오.

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

멋있는! !그래도 첫 번째 줄에는 없습니다.
ProblemsOfSumit

4
두 번째 줄은 여러 경우에 매우 유용합니다.
mastazi 2015-06-15

\-그리고 =또한 : 실종
시모 D' 보라 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

1
string = string.replace(/[\W_]/g, "_");
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.