正则校验emoji和特殊字符,并替换成-

1,628 阅读1分钟

把连续的emoji、特殊字符、空格转换为一个-

/([\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|["#%&()+,,/::;;<=>??@\\|“”()《》 ])+/g

+ : 匹配一个或多个

|:或

const emojiRegStr = '[\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'; 

const specCharRegStr = '["#%&()+,,/::;;<=>??@\|“”()《》 ]'; 

const targetReg = eval(`/(emojiRegStr{emojiRegStr}|{specCharRegStr})+/g`);

const str = "😉😆😂😄😄$%^^&&哈哈哈"

str.replace(targetReg, '-');

定义基础的正则表达式字符串,使用的时候通过eval计算这些字符串,这些字符串就会作为正则表达式去执行。

这样就可以定义多种正则,方便组合使用