主要是为了在移动端输入框(input、textarea)输入emoji表情时,做校验。
移动端直接输入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:
<input type="text" id="emojiStr">
JS:
var str=$.trim($("#emojiStr").val());
var patt = /[\ud800-\udbff][\udc00-\udfff]/g; // 检测utf16字符正则
if(patt.test(str)){
alert("输入的字符非法!");
}