js判断字符串是否含有特殊字符和emoji表情?以及如何过滤
js判断字符串是否含有特殊字符和emoji表情,代码如下:
var reg = /[~#^$@%&!?%*]/gi;
if(reg.test(postdata.Name.trim())) {
alert("姓名不能含有特殊字符");
} else {
if(isEmojiCharacter(postdata.Name.trim())) {
alert("姓名不能含有表情");
} else {
//自己的代码
}
}
function isEmojiCharacter(substring) {
for(var i = 0; i < substring.length; i++) {
var hs = substring.charCodeAt(i);
if(0xd800 <= hs && hs <= 0xdbff) {
if(substring.length > 1) {
var ls = substring.charCodeAt(i + 1);
var uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
if(0x1d000 <= uc && uc <= 0x1f77f) {
return true;
}
}
} else if(substring.length > 1) {
var ls = substring.charCodeAt(i + 1);
if(ls == 0x20e3) {
return true;
}
} else {
if(0x2100 <= hs && hs <= 0x27ff) {
return true;
} else if(0x2B05 <= hs && hs <= 0x2b07) {
return true;
} else if(0x2934 <= hs && hs <= 0x2935) {
return true;
} else if(0x3297 <= hs && hs <= 0x3299) {
return true;
} else if(hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 ||
hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b ||
hs == 0x2b50) {
return true;
}
}
}
}js禁止输入框输入特殊符号或emoji表情
解决方案就是,事件上绑定检查事件,检查输入的值是否含有特殊符号或emoji表情,检查的话就用正则表达式
// 判断是否含有特殊符号
let iconRule1 = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im
// 判断是否含有emoji表情
let iconRule2 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig
// 如果为true,字符串含有emoji表情 ,false不含
console.log(iconRule2.test(info.personName))
// 如果为true,字符串含有特殊符号 ,false不含
console.log(iconRule1.test(info.personName))
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!