簡體   English   中英

在JavaScript中轉義特殊字符

[英]Escaping special characters in JavaScript

我需要JavaScript中的方法來轉義所有不是(az / AZ / 0-9 /-/ _)的字符

如果字符為ø,則應將其替換為oe,如果將其替換為å,則應將其替換為aa,等等。...如果字符不在列表中,則應將其替換為下划線。

如果連續有兩個下划線(__),則應將其替換為單個下划線。

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

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格式提供它,以容納諸如ø這樣的特殊字符。

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

這個版本肯定更加靈活和可維護。 我會用這個,盡管我保留后一個迭代。 好主意,斯特拉格!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM