【发布时间】:2012-02-22 22:25:34
【问题描述】:
我必须检查一个 4 个字符的字符串是否都是有效的十六进制,我发现另一个问题确切地说明了我想要做什么,但它是 Java:Regex to check string contains only Hex characters
我怎样才能做到这一点?
我阅读了正则表达式的 ruby 文档,但我不明白如何根据此匹配返回 true 或 false?
【问题讨论】:
标签: ruby
我必须检查一个 4 个字符的字符串是否都是有效的十六进制,我发现另一个问题确切地说明了我想要做什么,但它是 Java:Regex to check string contains only Hex characters
我怎样才能做到这一点?
我阅读了正则表达式的 ruby 文档,但我不明白如何根据此匹配返回 true 或 false?
【问题讨论】:
标签: ruby
pattern = /^[[:xdigit:]]+$/
然后检查一下:
if pattern === your_string
if /^[[:xdigit:]]+$/ === your_string
或与
if your_string.match?(/^[[:xdigit:]]+$/)
【讨论】:
在 ruby 正则表达式中,\h 匹配一个十六进制数字,\H 匹配一个非十六进制数字。
所以
!str[/\H/] 就是你要找的。p>
【讨论】:
if str =~ /^[0-9A-F]+$/
成功了。如果你想要不区分大小写,那么:
str =~ /^[0-9A-F]+$/i
【讨论】:
nil
0 要么返回nil,有没有办法查看它是否匹配?
nil 是一个假值,所以这意味着它不匹配,而0 意味着它在第一个字符上匹配。
/^[0-9A-F]$/i === str。 Regexp#=== 表达式总是返回真或假。