代码之家  ›  专栏  ›  技术社区  ›  ParisNakitaKejser

在javascript中转义特殊字符

  •  1
  • ParisNakitaKejser  · 技术社区  · 15 年前

    我需要一个javascript中的方法来转义所有不是的字符(a-z/a-z/0-9/-/u)

    如果角色是_应该用oe替换,如果是_应该用aa替换,等等……如果字符不在列表中,则应将它们替换为下划线。

    如果一行中有两个下划线(uuuu),则应将其替换为一个下划线。

    我需要用JavaScript和/或PHP来完成这项工作。

    1 回复  |  直到 15 年前
        1
  •  6
  •   c_harm    15 年前
    String.prototype.slugify = function(){
        return this.replace('ø','oe').replace('å','aa').replace(/\W/gi,'_').replace(/_+/g,'_');
    }
    var x = 'sdfkjshødfjsåkdhf#@$%#$Tdkfsdfxzhfjkasd23hj4rlsdf9';
    x.slugify();
    

    根据需要添加任意数量的规则 .replace('search','replace') 模式。一定要用 .replace(/\W/gi,'_').replace(/_+/,'_') ,它转换。还要确保以utf-8提供,以适应诸如_之类的特殊字符。

    斯特拉格建议的另一种版本:

    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,'_');
    }
    

    这个版本当然更灵活和可维护。我会用这一个,尽管我将保留上一个迭代的后代。好主意,斯特拉格!