文字列内の特殊文字を_(アンダースコア)に置き換えます


92

文字列から特殊文字を削除して、その文字に置き換えたいのですが_

例えば:

string = "img_realtime_tr~ading3$"

結果の文字列は「img_realtime_tr_ading3_」のようになります。

これらの文字を置き換える必要があります。 & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
なぜこれが閉じられているのか、それは良い質問です。SEに適したURLを作成するときに役立つ特殊文字の置換方法。ありがたいことに、それでも誰かがそれに答えました。
自転車

1
インターネットの世界中の聴衆に一般的に適用できない非常に狭い状況?さて、少なくとも108人が別のことを考えているとだけ言っておきましょう。
アントワーヌペルティエ2017

1
閉まっている ?ただし、ダーティデータをスクレイピングする場合には非常に便利です。
Standaa Reinstate Monica 2017

これは閉じるべきではありません
MustkeemK19年

回答:


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

または、数字と文字を除くすべての文字を変更するには、次のことを試してください。

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

涼しい!!ただし、最初の行にはありません。
ProblemsOfSumit

4
2行目は、多くの場合に非常に役立ちます。
マスタジ2015年

\-そして=また行方不明:)
Simo D'lo Mafuxwana 2016年

2
以下のようにあなたがスペースの前に特殊文字を使用している場合はhello! word、あなたがこのような連続したアンダースコア2つとなってしまいます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 2017年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.