首页 > 解决方案 > 向正则表达式添加特殊字符

问题描述

我的模型中有这个验证:

validates :field, length: { maximum: 20 }, format: { with: /\A('|\p{L}|\s|-)*\z/ }

它正在验证field应该只包含 unicode 字母、撇号、破折号和空格。

另外,我想在这个正则表达式中允许这些特殊字符:

%w[
    Ä É Ö Ü ß ä é ö ü À Â Æ Ç È É Ê Ë Î Ï Ô Œ Ù Û Ü Ÿ à â æ ç
    è é ê ë î ï ô œ ù û ü ÿ Á É Í Ñ Ó Ú Ü ¿ ? á é í ñ ó ú ü ! ¡
    À È É Ì Ò Ù à è é ì ò ù Ć Ą Ę Ł Ń Ó Ś Ź Ż ć ą ę ł ń ó ś ź ż
    Á Â Ã À Ç É Ê Í Ó Ô Õ Ú á â ã à ç é ê í ó ô õ ú
  ]

谢谢!

标签: ruby-on-railsregexruby

解决方案


您当前的正则表达式匹配所有这些字符,除了:¡ ¿ !?. 尝试使用\A[-\p{L}'\s!¡¿\?]*\z(您不需要将所有内容与 分开|

https://rubular.com/r/lbHMMGxWY6wqMH


推荐阅读