如何为现有JavaScript正则表达式新增emoji表情匹配规则?
正则修改方案
原有正则的匹配范围是字母、数字、常用标点和空白,要新增emoji匹配可以按以下方式调整:
核心修改逻辑
- 向原有字符集中新增emoji匹配规则:
\p{Emoji},这是ES2018+支持的Unicode属性转义,可以匹配所有标准emoji表情 - 正则末尾添加
u修饰符,开启Unicode匹配模式,才能正确识别\p语法
修改后完整代码
var letters = /^[0-9A-Za-z\s\-_@#$*!&'’‘”“"?,.:/=+<>~%^ \p{Emoji}]+$/u;
兼容旧环境的备选方案
如果需要兼容不支持u修饰符的低版本JS运行环境,可以手动写入emoji的Unicode范围,修改后的正则如下:
var letters = /^[0-9A-Za-z\s\-_@#$*!&'’‘”“"?,.:/=+<>~%^ \u{1F300}-\u{1F64F}\u{1F680}-\u{1F6FF}\u{1F900}-\u{1F9FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]+$/u;
注意:手动写Unicode范围可能存在遗漏新发布emoji的问题,优先推荐使用
\p{Emoji}的方案。
内容的提问来源于stack exchange,提问作者Initial Commit
相关产品推荐
相关产品推荐

