表情输入"/>
前端防止表情输入
近期项目中,测试发现,可以将表情输入到各种input中,并提交到后端数据库。
由于给每一个input框加入正则校验,工作量比较大,所以想到了再每次提交请求时,递归遍历post请求中data数据,把所有string类型的字段进行校验,将表情剔除。
//判读数据类型
getType=(val)=>{return Object.prototype.toString.call(val);
}//循环结构体 正则去除string类型中的表情
forObject = (data) => {for (var key in data) {let type = getType(data[key]);if (type === "[object String]") {//正则校验表情var reg = /[\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 //浅拷贝 直接 赋值 剔除表情的string 类型data[key] = data[key].replace(reg, '')}//当类型为objct或者数组时 递归调用 本函数 进入下一级嵌套if (type === "[object Object]"||type === "[object Array]") {forObject(data[key])}}
}
更多推荐
前端防止表情输入
发布评论