字符正则
表情符正则:
const emojiReg = /[\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;
特殊字符正则:
const scReg = /[`~!@#$%^&*()_-+=<>?:"{}|,./;'\[]·~!@#¥%……&*()——-+={}|《》?:“”【】、;‘',。、]/im;
过滤方式
直接替换
let str = 'aa '
console.log(str.replace(emojiReg, ''));
不匹配时toast提示
if (str.match(emojiReg)) {
console.log('输入包含非法字符,请检查!')
}
这种方式适用于textarea场景中。对于textarea,bindinput 处理函数并不会将返回值反映到 textarea 上,因此不建议在多行文本上对用户的输入进行修改。
注意:采用match匹配代替test检测,因为每次test时,lastIndex会发生更改,可能第一次结果为true,再一次的结果为false,导致test结果不准确。