用于检测表情的优化正则表达式&;仅在字符串javascript中使用表情符号
我正在开发一个React本机聊天应用程序,其中我需要两个正则表达式,一个用于检测字符串是否包含表情符号,另一个用于检测字符串是否包含表情符号,仅用于设置大消息列表的样式 经过一些研究,我发现了最快、最完整的正则表达式,用于检测字符串是否有表情符号(在第一次匹配后停止),它可以完美地工作:用于检测表情的优化正则表达式&;仅在字符串javascript中使用表情符号,javascript,regex,react-native,Javascript,Regex,React Native,我正在开发一个React本机聊天应用程序,其中我需要两个正则表达式,一个用于检测字符串是否包含表情符号,另一个用于检测字符串是否包含表情符号,仅用于设置大消息列表的样式 经过一些研究,我发现了最快、最完整的正则表达式,用于检测字符串是否有表情符号(在第一次匹配后停止),它可以完美地工作: /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u030
/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/
我知道它是如何工作的,所以我对它进行了重构,以检测字符串是否只包含表情符号——5是表情符号的最大数量
/^((?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*){0,5}$/
只需将整个正则表达式分组,并在开始处添加^,在结束处添加{0,5}$
<> P>有没有更好的方法来做第二个正则表达式?< /p>你认为什么是iMijo?iOS和Android?到,共有4022个表情符号,您的模式仅匹配其中1695个。在第一次匹配后停止-您没有指定
g
标志。如果你需要匹配任何0个或更多的表情符号,你就不应该用另一个组来包装<代码>(…)*/COD>,只需在开始时添加<代码> ^ <代码>结尾处的代码> $< /代码>(在代码> */代码>之后)。你认为是什么?到,共有4022个表情符号,您的模式仅匹配其中1695个。在第一次匹配后停止-您没有指定g
标志。如果需要匹配任何0个或多个表情符号,则不应将(…)*
与其他组包装,只需在开头添加^
,在结尾添加$
(紧跟*
)。