我有以下使用大量正則表達式的javascript函數。有什麼辦法可以簡化這個嗎?Javascript:簡化許多正則表達式.replace()爲更少的正則表達式調用
function encode(str){
if(typeof str==='number'){
return str;
}
if(typeof str!=='string'){
return '';
}
var enc=str;
enc=enc.replace(/_/g,'_u'); //underscore
enc=enc.replace(/(\r\n|\r|\n)/g,'_r'); //return
enc=enc.replace(/&/g,'_a'); //ampersand
enc=enc.replace(/\\/g,'_b'); //backslash
enc=enc.replace(/:/g,'_c'); //colon
enc=enc.replace(/"/g,'_d'); //double quote
enc=enc.replace(/=/g,'_e'); //equals
enc=enc.replace(/€/g,'_4'); //euro
enc=enc.replace(/\>/g,'_g'); //greater than
enc=enc.replace(/#/g,'_h'); //hash
enc=enc.replace(/'/g,'_i'); //inverted comma
enc=enc.replace(/\</g,'_l'); //less than
enc=enc.replace(/¬/g,'_n'); //not
enc=enc.replace(/\|/g,'_1'); //pipe
enc=enc.replace(/¦/g,'_2'); //broken pipe
enc=enc.replace(/\+/g,'_p'); //plus
enc=enc.replace(/£/g,'_3'); //pound
enc=enc.replace(/\?/g,'_q'); //question mark
enc=enc.replace(/\//g,'_s'); //slash
enc=enc.replace(/\~/g,'_t'); //tlide
enc=enc.replace(/\`/g,'_z'); //back quote
enc=enc.replace(/\s/g,'_0'); //space
enc=enc.replace(/[\u0000-\u001f]/g,'');
return enc;
};
最終你的狀況是什麼。你想用一些你的東西替換所有的特殊字符。不是嗎? – user2587222
你爲什麼要改變它? –
你應該描述一下你想用正則表達式來做一些例子,然後有人會幫助你。 –