Ruby:正则表达式中的十六进制

时间:2011-07-11 22:19:23

标签: ruby regex hex

我需要在Ruby(实际上是Rails)程序中匹配正则表达式中的md5校验和。我发现某处我可以将十六进制字符串与\h序列匹配,但我找不到该链接了。

我正在使用该序列,我的代码在Ruby 1.9.2中工作。我甚至可以在普通的IRB下工作(所以它不是Rails扩展)。

ruby-1.9.2-p180 :007 > "123abcdf" =~ /^\h+$/; $~
 => #<MatchData "123abcdf"> 
ruby-1.9.2-p180 :008 > "123abcdfg" =~ /^\h+$/; $~
 => nil 

然而,我的IDE将该表达标记为错误,我找不到引用该序列的任何引用。

\h序列在Ruby Regex中是否在任何环境/版本下是合法的,还是我应该相信我的ide并将其替换为[abcdef\d]之类的内容?

2 个答案:

答案 0 :(得分:11)

是的。查看the official doc以获取Ruby中正则表达式的完整文档。

请注意,\h也会匹配大写字母,因此它实际上等同于[a-fA-F\d]

答案 1 :(得分:4)

根据this \ h是oniguruma的一部分,我认为这是红宝石1.9的标准。