用_(下划线)替换字符串中的特殊字符


92

我想从字符串中删除特殊字符,并将其替换为该_字符。

例如:

string = "img_realtime_tr~ading3$"

结果字符串应类似于“ img_realtime_tr_ading3_”;

我需要替换这些字符: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
为什么关闭了,这是一个好问题。如何替换特殊字符,在制作SE友好的URL时很有用。值得庆幸的是,仍然有人对此作出了答复。
骑自行车

1
一种非常狭窄的情况,通常不适用于互联网的全球受众吗?好吧,至少可以说有108个人另有想法。
Antoine Pelletier '02

1
封闭的?不过,在抓取脏数据时非常有用。
Standaa恢复莫妮卡的时间

这不应该关闭
Mustkeem K

Answers:


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

或者,要更改除数字和字母以外的所有字符,请尝试:

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

凉!!但是在第一行中缺少。
ProblemsSuSumit

4
第二行在许多情况下非常有用。
mastazi

\-=也失踪了:)
Simo D'lo Mafuxwana

2
如果在空格之前有特殊字符,hello! word您将以两个这样的下划线结尾,hello__word那么您可以这样做:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz 2016年

3
@DannyFeliz,或者即使string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');您不知道有多少连续的下划线
falkodev

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.