以下是自己使用的工具函数,其中emoji-regex需要安装依赖包
npm i emoji-regex
function irRegular(str, type, returnType, message) {
/*
* str 传入的值 String
* type 替换类型 String ('Number', 'Letter' ,'Sign', 'Emoji' ,'All')
* returnType 返回类型 String('Boolean', 'String')
* message 提示类型 String
*/
let str_temp;
const emojiRegex = require('emoji-regex');
const regex = emojiRegex();
const match = regex.exec(str);
switch(type) {
case 'Number':
str_temp = str.replace(/\d/g, '');
break;
case 'Sign':
str_temp = str.replace(/[`~*~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/g, '');
break;
case 'Letter':
str_temp = str.replace(/[A-Za-z]/g, '');
break;
case 'Emoji':
str_temp = str.replace(match[0], "")
break;
case 'All':
str_temp = str.replace(/[`~*~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、\w]/g, '');
str_temp = str.replace(str_temp, "")
break;
}
if(str !== str_temp) {
if(message) {
console.log(message);
}
return returnType === 'Boolean' ? true : str_temp;
} else {
return returnType === 'Boolean' ? false : str_temp;
}
}
isIrRegular('大1z@', 'Number', 'String') // 大z@
isIrRegular('大1z@', 'Letter', 'String') // 大1@
isIrRegular('大1z@', 'Sign', 'String') // 大1z
isIrRegular('大1z@', 'All', 'String') // 大
表情符号的pc上不太好测试,但我真机测试是ok的。