检查字符串是否是以“0x ...”开头的十六进制 Perl

Check if string is hex that starts with "0x..." Perl

我如何检查一个字符串:

  1. 以“0x”开头
  2. 是一个有效的十六进制数

例如:

# Returns false
$string = "0213"

# Returns false
$string = "0xHHH"

# Returns true
$string = "0x123456789abcdefABCDEF"

下面操作returns一个布尔值。

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

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

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 中找到更多信息。上面的模式适用于十六进制整数,您可以使用模块的选项允许或限制更多变体。