【问题标题】:Validate hexadecimal value in Perl using xdigit [duplicate]使用 xdigit 在 Perl 中验证十六进制值 [重复]
【发布时间】:2019-07-11 11:10:11
【问题描述】:

我正在尝试验证我的 perl 脚本中的变量是否为十六进制。

我用谷歌搜索了这个,发现了 xdigit 和其他可能的方法。我只想使用 xdigit。

但我找不到关于如何正确使用 xdigit 的示例脚本/sn-p!

编辑:

我没有任何代码。我需要一个变量,比如 $sz,它可能包含一个有效的十六进制值(00004a4c)或无效的十六进制值(一些字母数字)。我需要验证这个 $sz 是否持有正确的十六进制。

在一个网站上,我看到了这个:

检查字符串是否是某个数字的十六进制表示(即仅由十六进制数字组成)很容易使用正则表达式完成。假设您的字符串在 $_ 中,

/[[:xdigit:]]+$_/;

所以我尝试了以下方法:

$sz =~ /[[:xdigit:]]+$_/;

我不明白如何正确地使用它来达到我的目的。

【问题讨论】:

  • 如果您提供一些示例输入并解释 $elems[0] 应该是什么,会更容易提供帮助。
  • @mob。谢谢。我应该对我的查询很清楚。我是 Perl 的新手。现在更新了。
  • @SteffenUllrich 感谢您的评论。
  • 如果$_ 包含您要验证的字符串,为什么要将它放入 正则表达式本身?如果你从网页中提取它,你应该忘记你曾经看过那个页面。
  • @Shawn。我不明白你的问题。可能是因为我对 Perl 的基础知识不够,所以对 $_ 不了解。我最初尝试了 $sz=~/[[:xdigit:]+\$entry],$entry 是单词持有者。但我无法让它工作。我应该多研究一点并自己弄清楚这一点。

标签: regex perl hex


【解决方案1】:

要检查字符串是否由整个十六进制数字组成,您可以使用

$sz =~ /^[[:xdigit:]]+\z/     # Consist entirely of hex digits

$sz !~ /[^[:xdigit:]]/        # Doesn't contain non-hex digits

【讨论】:

    猜你喜欢
    • 2013-07-04
    • 2021-03-06
    • 2018-09-07
    • 2019-05-02
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多