Ruby on rails RubyonRails:Regex是否包含重音字符和特殊字符?

Ruby on rails RubyonRails:Regex是否包含重音字符和特殊字符?,ruby-on-rails,ruby,regex,ruby-on-rails-4,Ruby On Rails,Ruby,Regex,Ruby On Rails 4,在我的rails应用程序中,我想使用一个正则表达式来接受重音字符(éçá,…)和特殊字符(&()“,…),现在这是我的定义 validates_format_of :job_title, :with => /[a-zA-Z0-9]/, :message => "le titre de l'offre n'est pas valide", :mul

在我的rails应用程序中,我想使用一个正则表达式来接受重音字符(éçá,…)和特殊字符(&()“,…),现在这是我的定义

validates_format_of :job_title, 
                      :with =>  /[a-zA-Z0-9]/, 
                      :message  => "le titre de l'offre n'est pas valide",
                      :multiline => true 
我还希望正则表达式不接受非拉丁字符,如阿拉伯语、汉语、

用于字母数字字符:

validates_format_of :job_title, 
                  :with =>  /[[:alnum:]]/, 
                  :message  => "le titre de l'offre n'est pas valide",
                  :multiline => true 

一个简单的选项是将所有要接受的字符列为白名单。例如:

/[a-zA-Z0-9áéíóúÁÉÍÓÚÑñ&*]/
您可以使用
\w
代替
a-zA-Z0-9
。它表示任何单词字符(字母、数字、下划线)


对于拉丁字符,您可以使用。您必须确保首先输入,因为分解的字符串不匹配(即,包含使用组合字符的字符的字符串)。此外,这也不匹配类似
(即
x
,然后是
组合尖锐重音
)因为它不会组成一个单独的角色,但这可能没关系,因为它不太可能被任何人实际使用

对于“特殊字符”,你确实需要更具体地说明你想要什么。你说你想允许
(所谓的“直接”引号),但是
(“排版”或“卷曲”引号)呢。既然您允许使用欧洲语言,那么
«
»
呢?您可以使用
\p{Punct}
类,该类应该匹配所有这些,并且需要确定它是否匹配太多

您可能还希望匹配空格。只有空格字符可以吗?制表符、不间断空格、换行符等呢
\p{Space}
应该得到它们

您可能需要匹配其他字符,但这些字符无法识别,例如,当前符号,也可能需要添加这些字符

因此,第一次尝试正则表达式时可能是这样的(我添加了
\a
\z
来锚定开始和结束,以及
*
来匹配所有字符–我认为您需要它们):


将这些特殊字符放入正则表达式中。像«、»或»这样的内容可以接受吗?任意限制字符会惹恼很多人,特别是当你不小心忘记了他们需要使用的重音字符时。在这种情况下,阿拉伯文、中文和其他字符将被接受。这并不是一个详尽的列表。你还需要包括几十种其他类型,比如“a”单独的“a”,以及像ç、ø或ß这样的可能符合条件的其他类型。老实说,列出可接受的ASCII字符可能比列出非ASCII字符更容易,对吗?☃
/[\wáéíóúÁÉÍÓÚÑñ&*]/
/\A[\p{Latin}\p{Punct}\p{Space}0-9]*\z/