检查字符串是否为以" 0x ..."开头的十六进制; Perl的

时间:2015-07-27 18:55:51

标签: perl hex

我如何检查是否有字符串:

  1. 以" 0x"
  2. 开头
  3. 是有效的十六进制数
  4. 例如:

    # Returns false
    $string = "0213"
    
    # Returns false
    $string = "0xHHH"
    
    # Returns true
    $string = "0x123456789abcdefABCDEF"
    

2 个答案:

答案 0 :(得分:2)

以下操作返回布尔值。

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

答案 1 :(得分:2)

你可以使用它而不是重新发明轮子: - )

use Regexp::Common qw(number);
print "$string is hex\n" if $string =~ /^0x$RE{num}{int}{-base => 16}{-sign => ''}$/i

您可以在the documentation of Regexp::Common::number中找到更多信息。上面的模式是十六进制整数,您可以使用模块的选项允许或限制更多变体。