javascript替換字元

來源:互聯網
上載者:User

不用多言,這種技術被廣泛應用於表單驗證,文法高亮和危險字元過濾中。一段話如果很長,如果不想像下面那樣替換,我們得想些辦法了。

str = str.replace( /&(?!#?\w+;)/g , '&amp;').replace( /"([^"]*)"/g   , '“$1”'   ).replace( /</g           , '&lt;'  ).replace( />/g           , '&gt;' ).replace( /…/g           , '&hellip;' ).replace( /“/g           , '&ldquo;'  ).replace( /”/g           , '&rdquo;'  ).replace( /‘/g           , '&lsquo;'  ).replace( /’/g           , '&rsquo;'  ).replace( /—/g           , '&mdash;' ).replace( /–/g           , '&ndash;'  );

上面這個還算短了,我看過一些論壇的JS代碼,在把Wind Code轉換成HTML時,那真是瘋子似的寫上二三十行。其實我們大可以把這些匹配模式與替換後的字元放到一個雜湊中,然後一口氣替換掉。

var hash = {'<' : '&lt;' ,'>' : '&gt;','…' : '&hellip;','“' : '&ldquo;' ,'”' : '&rdquo;' ,'‘' : '&lsquo;' ,'’' : '&rsquo;' ,'—' : '&mdash;','–' : '&ndash;'};str = str.replace( /&(?!#?\w+;)/g , '&amp;' ).replace( /"([^"]*)"/g   , '“$1”'  ).replace( /[<>…“”‘’—–]/g , function ( $0 ) {return hash[ $0 ];});

但這個缺陷也很明顯,如雜湊的鍵必須是簡單的一般字元串,不能是複雜正則,這就是我們不得不分開的原因。replace在老一點的瀏覽器是不支援function的。為此,我們只好放棄上面最後那個replace方式,替換方統一為一般字元串。

String.prototype.multiReplace = function ( hash ) {var str = this, key;for ( key in hash ) {if ( Object.prototype.hasOwnProperty.call( hash, key ) ) {str = str.replace( new RegExp( key, 'g' ), hash[ key ] );}}return str;};

Object.prototype.hasOwnProperty.call( hash, key )是用來過濾繼承自原型的方法與屬性的。這樣一來,使用就簡單了:

str = str.multiReplace({'&(?!#?\\w+;)' :'&amp;','"([^"]*)" : '“$1”','<' : '&lt;' ,'>' : '&gt;','…' : '&hellip;','“' : '&ldquo;' ,'”' : '&rdquo;' ,'‘' : '&lsquo;' ,'’' : '&rsquo;' ,'—' : '&mdash;','–' : '&ndash;'});
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.