【发布时间】:2020-01-26 14:48:17
【问题描述】:
是否有阻止表情符号输入到文本字段的方法,例如在键盘上关闭它们。我尝试了输入格式化程序和正则表达式,但并非所有这些都被过滤掉了。
这是我当前的实现。
BlacklistingTextInputFormatter(
RegExp(
r'(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])'
),
);
使用添加新表情符号的正则表达式似乎也是一个糟糕的解决方案。
如果一个版本也可以在节点中实现并用于后端验证,那将很有帮助。
非常感谢:)
---更新
所以我还在颤振输入上使用了最大输入,它在右下角附加了一个字符数,例如0/15
使用正则表达式并输入表情符号会阻止输入,但字符数仍然会增加。
同样,如果没有正则表达式,每个符号的计数都会增加 2,而使用正则表达式,它只会增加 1。
--再次更新
当按下某些表情符号时,空字符串实际上包含内容,例如????️。
字符串对象上的代码单元字段有 [65039, 65039, 65039, 65039, 65039, 65039] 作为值。好像是这个 https://unicode-table.com/en/FE0F/
有人知道如何防止这种情况吗?
【问题讨论】:
-
对于后端验证,您可能需要查看与表情符号相关的 npm 包之一。比如这个:npmjs.com/package/emoji-regex
-
正则表达式似乎在后端工作它只是颤动的代码不太好
-
它不适用于附加了 65039 的新表情符号
-
@ebg11 你找到解决办法了吗?