javascript中使用正則計(jì)算中文長度的例子
由于javascript是unicode編碼的,所有的字符對于它來說一個(gè)就是一個(gè),但是后臺(tái)程序不是,通常在后臺(tái)程序中一個(gè)中文是占兩個(gè)字節(jié)的,這就導(dǎo)致了前后端校驗(yàn)長度不一致,這個(gè)問題可以通過正則來解決。
function getRealLen( str ) {
return str.replace(/[^\x00-\xff]/g, '__').length; //這個(gè)把所有雙字節(jié)的都給匹配進(jìn)去了
}
附贈(zèng)另一小則技巧:
有時(shí)候?yàn)榱嗣烙^,不影響布局和界面,會(huì)以一些文案進(jìn)行截字,但是中文的寬度和英文的寬度不一樣,如果按照英文標(biāo)準(zhǔn)來截中文的,或者按中文標(biāo)準(zhǔn)截英文的,顯然會(huì)忽長忽短,特別是昵稱這類容易既有中文又有英文的東西,同樣我們可以用上面的思路
function beautySub( str, len) {
var reg = /[\u4e00-\u9fa5]/g, //專業(yè)匹配中文
slice = str.substring(0,len),
realen = len - ( ~~( slice.match(reg) && slice.match(reg).length ) );
return slice.substring(0, realen ? realen : 1);
}
這里我們認(rèn)為一個(gè)中文字符是兩個(gè)英文字符的寬度,如果你是完美主義者,應(yīng)該想到j(luò)和w,m的寬度是不一樣的,w和m以及大寫的部分字母和中文的寬度是一致的,這個(gè)函數(shù)的正則還有相當(dāng)大的改進(jìn)空間,同時(shí)也可以指定截字的起始位置。
- php正則表達(dá)匹配中文問題分析小結(jié)
- PHP 正則表達(dá)式驗(yàn)證中文的問題
- PHP把空格、換行符、中文逗號(hào)等替換成英文逗號(hào)的正則表達(dá)式
- php+正則將字符串中的字母數(shù)字和中文分割
- PHP 正則判斷中文UTF-8或GBK的思路及具體實(shí)現(xiàn)
- 正確的PHP匹配UTF-8中文的正則表達(dá)式
- javascript判斷中文的正則
- 中文用戶名的js檢驗(yàn)正則
- js中判斷數(shù)字\字母\中文的正則表達(dá)式 (實(shí)例)
- js實(shí)現(xiàn)正則匹配中文標(biāo)點(diǎn)符號(hào)的方法
- JavaScript正則表達(dá)式驗(yàn)證中文實(shí)例講解
- JavaScript控制輸入框中只能輸入中文、數(shù)字和英文的方法【基于正則實(shí)現(xiàn)】
- php與javascript正則匹配中文的方法分析
相關(guān)文章
js 頁面關(guān)閉前的出現(xiàn)提示的實(shí)現(xiàn)代碼
主流的瀏覽器都支持onbeforeunload事件(即頁面卸載前觸發(fā)的事件),而現(xiàn)在大多網(wǎng)站都用到了此功能2011-05-05
javascript基于DOM實(shí)現(xiàn)權(quán)限選擇實(shí)例分析
這篇文章主要介紹了javascript基于DOM實(shí)現(xiàn)權(quán)限選擇的方法,實(shí)例分析了javascript針對頁面元素的動(dòng)態(tài)選擇與添加刪除等操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05
???????分享7?個(gè)實(shí)用?TypeScript?單行代碼
這篇文章主要介紹了???????分享7?個(gè)實(shí)用?TypeScript?單行代碼,其中包括泛型、斷言等高級用法,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-05-05
如何用JS實(shí)現(xiàn)簡單的數(shù)據(jù)監(jiān)聽
這篇文章主要介紹了如何用JS實(shí)現(xiàn)簡單的數(shù)據(jù)監(jiān)聽,對數(shù)據(jù)監(jiān)聽感興趣的同學(xué),可以參考一下2021-05-05

