Rails正则表达式警告:字符类有' - '没有转义

时间:2014-07-19 17:56:24

标签: ruby-on-rails regex

我对正则表达式了解不多,所以我找到了一些并尝试使用它。

为什么我的此正则表达式出现此错误:

warning: character class has '-' without escape: /[a-zA-Z0-9-._ ]/

这里有什么问题?

验证应该只有字母,数字和" - " ,"。" ," _"," " (空格)

3 个答案:

答案 0 :(得分:15)

示例 [a-z]的正则表达式中的连字符特殊含义表示a到z字符。

如果您想匹配-,则应该转义或者结束(或开始)上课。

[a-zA-Z0-9._ -]

OR

[-a-zA-Z0-9-._ ]

OR

[a-zA-Z0-9\-._ ]

了解更多 Including a hyphen in a regex character bracket?

答案 1 :(得分:3)

在字符类中,连字符具有特殊含义。您可以将连字符作为类的第一个或最后一个字符。在某些正则表达式实现中,您也可以直接放在范围之后。如果你将连字符放在任何其他地方,你需要将它转义为你的类。

[-a-zA-Z0-9._ ]

答案 2 :(得分:2)

如果将-置于字符类中,则需要对其进行转义,因为它在字符类中具有特殊含义( range )。或者你可以将-放在char类的开头或结尾。如果你喜欢这样,它就不需要在字符类中转义-符号。