4

我刚刚将一个小 gem 从 Ruby 1.9.3 移植到了漂亮的新 Ruby 2.0.0。我必须做的唯一改变是在正则表达式中。

在 1.9.3 下,以下正则表达式将匹配包含除数字、与数字相关的标点和空格(包括不间断空格)以外的字符的任何字符串。

/[^[[:space:]]\d\-,\.]/

在 2.0.0 下,我不得不将 Posix 空间类从否定类的开头移开。

/[^\d\-,\.[[:space:]]]/

我没有在我查看过的补丁说明中发现此更改。它在任何地方都有记录吗?

4

1 回答 1

8

正则表达式引擎已更改为 Onigmo(基于Oniguruma),这可能会导致问题。

据我所知,您错误地声明了正则表达式。第二组括号不是必需的:

/[^[:space:]\d\-,\.]/

[:space:]声明仅在集合内无效,因此您会看到它看起来[[:space:]]好像是单独使用的。在您的情况下,您还有其他几个添加到集合中。

我不确定为什么\s在这种情况下还不够。

于 2013-02-25T21:59:51.453 回答