转义JavaScript中的特殊字符

Par*_*ser 1 javascript php

我需要一个JavaScript方法来逃避所有不是(az/AZ/0-9/ - /_)的字符

如果字符是ø,则应该用oe替换,如果它用aa替换,等等......如果字符不在列表中,则应该用下划线替换.

如果连续有两个下划线(__),则应使用单个下划线替换它们.

我需要在JavaScript和/或PHP中完成此操作.

小智 6

String.prototype.slugify = function(){
    return this.replace('ø','oe').replace('å','aa').replace(/\W/gi,'_').replace(/_+/g,'_');
}
var x = 'sdfkjshødfjsåkdhf#@$%#$Tdkfsdfxzhfjkasd23hj4rlsdf9';
x.slugify();
Run Code Online (Sandbox Code Playgroud)

根据.replace('search','replace')模式添加尽可能多的规则.确保你完成它.replace(/\W/gi,'_').replace(/_+/,'_'),转换.另外,请确保以UTF-8提供服务,以适应ø等特殊字符.

Strager建议的备用版本:

String.prototype.slugify = function(){
    var replacements = {
        'ø': 'oe',
        'å': 'aa'
    }
    var ret = this;
    for(key in replacements) ret = ret.replace(key, replacements[key]);
    return ret.replace(/\W/gi,'_').replace(/_+/g,'_');
}
Run Code Online (Sandbox Code Playgroud)

这个版本当然更灵活,更易于维护.我会使用这个,虽然我保留了后代的后代.好主意,Strager!