匹配一套全面的表情符号很困难。您可以使用一组正则表达式来查找“类似表情符号”的东西,您可以在某处用特殊字符标记所有表情符号作为开始/结束,或者您可以列出所有可能的表情符号并与之匹配。您可能想使用某种正则表达式。
如果要使用正则表达式,可以使用活动记录“匹配”
class Emoji < ActiveRecord::Base
validates :something, format: { with: /[:;][\)3\/|\(]/,
message: "only allows emojis" }
end
我可能在那里逃脱了一些 ruby 不需要逃脱的东西,但你明白了。该正则表达式将匹配: 或; 之一,然后匹配)、(、/ 或| 之一,它们组合在一起构成一张脸。然而,许多表情符号可能更复杂。下一个示例将字符串与您在listOfEmoji 中拥有的有效表情符号列表进行比较。它使用包含验证器。
class Emoji < ActiveRecord::Base
validates :something, inclusion: { in: listOfEmoji,
message: "%{value} is not in the list of valid emoji" }
end
最后,您可以转义代码中您识别为表情符号的任何内容的开头和结尾。您必须使用实际表情符号中不包含的内容来执行此操作,然后将其作为正则表达式进行匹配。例如,如果您将 :) 替换为 emoji:)endemoji,您可以使用如下正则表达式对其进行验证:
class Emoji < ActiveRecord::Base
validates :something, format: { with: /emoji.+endemoji/,
message: "only allows emojis" }
end
.+ 是(任何字符)1 次或多次的正则表达式。所以这将匹配一个特殊信号,您的代码将包装它所知道的表情符号,您以后可以使用它来识别表情符号。有比 emoji 更好的词,但 endemoji。我最喜欢的是 ascii 7,打字机铃声的字符!
所有这些都是可能的,最佳答案在很大程度上取决于您希望如何构建代码以及您正在尝试做什么。