主要是为了在移动端输入框(input、textarea)输入emoji表情时,做校验。
移动端直接输入emoji表情,如:
参考文章:
- 阮一峰 Unicode与JavaScript详解
- 移动前端手机输入法自带emoji表情字符处理
- emoji表情用到的字符是4字节的UTF-16编码(utf-16有2字节和4字节两种编码)。
-
javascript
采用的是unicode编码(2字节的ucs-2编码)。 - emoji表情在js中被
自动
拆分成两个ucs-2的2字节字符。 - 4字节utf-16在js中被用两个字符来表示,高位范围为
0xD800 - 0xDBFF
,低位范围为0xDC00 - 0xDFFF
。 - 检测正则
/[\uD800-\uDBFF][\uDC00-\uDFFF]/g
HTML:
JS:
var str=$.trim($("#emojiStr").val());
var patt = /[\ud800-\udbff][\udc00-\udfff]/g; // 检测utf16字符正则
if(patt.test(str)){
alert("输入的字符非法!");
}
20150806190313935.png
表情对应%uD83d%uDE03