在js中字符串使用unicode來表示的,並且js使用的是UTF-16(UTF-16是Unicode字符編碼五層次模型的第三層)。
這樣來說大部分字符都是16bit編碼。
但是也有較少的部分是32bit,這是由於完整的unicode字符集是需要21bit來標識的。
1、匹配雙字節字符:[^\x00-\xff]
正則表達式 [^\x00-\xff]能匹配雙字節字符,下面方法用來獲取字符串長度,規則爲:單字節長度爲1、漢字等雙字節長度爲2;
function getLength(str){
return str.replace(/[^\x00-\xff]/g, 'aa').length;//把所有非單字節的字符轉換成2個單字符
}
二、匹配郵箱
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
判斷一個字符串str是否是郵箱格式
function isEmail(str){
var reg = /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/;
if (! reg.test(str)){
alert("輸入的不是郵箱");
} else {
alert("輸入的是郵箱格式");
}
三、匹配11位手機號碼
模式爲: reg = /\d{11}/;
function isPhoneNunmber(str){
var reg = /\d{11}/;
if ((str.length != 11) || (! reg.test(str))){
alert("輸入的不是11位號碼");
} else {
alert("輸入的是11位號碼");
}
}