JavaScript的正則表式是開發(fā)過程中經(jīng)常用到的一種工具,它可以對字符串進行靈活的匹配和替換,幫助我們實現(xiàn)很多功能。
今天我們所要講的就是正則表式中的全角冒號。在實際開發(fā)中,我們經(jīng)常會遇到一些中文字符需要進行匹配、替換,如果不加以特殊處理容易導致一些問題。隨著中文在互聯(lián)網(wǎng)應用中的普及,這種情況變得越來越普遍。
那么什么是全角冒號呢?
全角字符是指占兩個半角字符位置的字符,也即是中文字符在計算機顯示中等寬占位兩個字符的字符,其 ASCII 碼值大于 127。而半角字符就是在計算機中顯示時只占用一個等寬位置的字符,其 ASCII 碼值小于等于 127。
// js代碼實現(xiàn)一個全角字符檢測 function isFullwidthCode(str) { for(var i = 0; i< str.length; i++) { var code = str.charCodeAt(i); if(code >= 65281 && code<= 65374 || code == 12288) { return true; } } return false; } var str = "這個是全角字符:"; console.log(isFullwidthCode(str)); // true
如果在正則表式中想要匹配全角冒號,我們可以使用正則表式的unicode表示法,即'\uFF1A','\u'是unicode的前綴,'FF1A'是全角冒號對應的unicode碼值。具體表達式如下:
//匹配全角冒號 var regex = /[\uFF1A]/; var targetStr = '我是全角冒號:我是半角冒號:'; console.log(targetStr.match(regex)); //[':']
當然,有時候我們需要先把全角字符轉(zhuǎn)為半角字符再進行匹配,那么我們可以使用一個小技巧:
// 全角半角互換 function transform(code) { var result = code - 65248; return result< 0 ? code : result; }
利用這個技巧,我們就可以先將全角字符轉(zhuǎn)成半角字符,再使用正則匹配字符串:
//檢測字符中是否含有全角字符 var regex = /[^\uFF00-\uFFFF]/g; var targetStr = '半角字符aaa全角字符:'; targetStr = targetStr.replace(regex, function(match) { var c = transform(match.charCodeAt(0)); return String.fromCharCode(c); }); console.log(targetStr); // "半角字符aaa全角字符:"
在上面的代碼中,我們用字符集'[\uFF00-\uFFFF]'匹配了所有全角字符,然后利用replace()方法替換為其對應的半角字符。如果后面的回調(diào)函數(shù)中沒有加g修飾符,則只會替換字符串中的第一個全角字符。
通過以上方法,在開發(fā)過程中,我們就可以靈活地處理一些中文字符的匹配、替換問題啦。
上一篇python的階乘算法
下一篇css圖片水平放置