Rails正则表达式警告:字符类具有'-',不能转义

问题描述 投票:9回答:3

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

为什么我对此正则表达式有此错误:

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

这里怎么了?

验证应仅包含字母,数字和“-”,“。”。 ,“ _”,“”(空格)

ruby-on-rails regex
3个回答
17
投票

连字符在正则表达式中的特殊含义表示示例 [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?


3
投票

在字符类中,连字符具有特殊的含义。您可以将连字符作为课程的第一个或最后一个字符。在某些正则表达式实现中,您也可以直接放置在范围之后。如果将连字符放在其他任何地方,都需要对其进行转义以将其添加到班级中。

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

2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.