【问题标题】:Ruby, check if string is all valid hex characters?Ruby,检查字符串是否都是有效的十六进制字符?
【发布时间】:2012-02-22 22:25:34
【问题描述】:

我必须检查一个 4 个字符的字符串是否都是有效的十六进制,我发现另一个问题确切地说明了我想要做什么,但它是 Java:Regex to check string contains only Hex characters

我怎样才能做到这一点?

我阅读了正则表达式的 ruby​​ 文档,但我不明白如何根据此匹配返回 true 或 false?

【问题讨论】:

    标签: ruby


    【解决方案1】:
    pattern = /^[[:xdigit:]]+$/
    

    然后检查一下:

    if  pattern === your_string
    if /^[[:xdigit:]]+$/ === your_string
    

    或与

    if your_string.match?(/^[[:xdigit:]]+$/)
    

    【讨论】:

      【解决方案2】:

      在 ruby​​ 正则表达式中,\h 匹配一个十六进制数字,\H 匹配一个非十六进制数字。

      所以 !str[/\H/] 就是你要找的。​​p>

      【讨论】:

        【解决方案3】:
        if str =~ /^[0-9A-F]+$/
        

        成功了。如果你想要不区分大小写,那么:

        str =~ /^[0-9A-F]+$/i
        

        【讨论】:

        • 当我根据“f0a1”评估它时,这会返回nil
        • 取决于你是否要区分大小写。
        • 但我很困惑,因为它要么返回0 要么返回nil,有没有办法查看它是否匹配?
        • 是的,因为nil 是一个假值,所以这意味着它不匹配,而0 意味着它在第一个字符上匹配。
        • @JosephSilvashy,您也可以这样做:/^[0-9A-F]$/i === strRegexp#=== 表达式总是返回真或假。
        猜你喜欢
        • 1970-01-01
        • 2014-11-14
        • 2012-07-20
        • 1970-01-01
        • 2011-12-23
        • 2023-01-18
        • 2017-04-02
        • 1970-01-01
        • 2015-05-23
        相关资源
        最近更新 更多