如何创建检测文本中十六进制数字的正则表达式?
例如,'0x0f4','0acdadecf822eeff32aca5830e438cb54aa722e3'和'8BADF00D'.
Ste*_*der 164
以下怎么样?
0[xX][0-9a-fA-F]+
Run Code Online (Sandbox Code Playgroud)
匹配表达式以0开头,后跟较低或较大的x,后跟0-9,或af或AF范围内的一个或多个字符
Sim*_*yer 39
确切的语法取决于您的确切要求和编程语言,但基本上:
/[0-9a-fA-F]+/
Run Code Online (Sandbox Code Playgroud)
或者更简单地说,i使它不区分大小写.
/[0-9a-f]+/i
Run Code Online (Sandbox Code Playgroud)
如果你有幸使用Ruby,你可以这样做:
/\h+/
Run Code Online (Sandbox Code Playgroud)
编辑 - 史蒂文施罗德的回答让我意识到我对0x位的理解是错误的,所以我相应地更新了我的建议.如果你还想匹配0x,那么等价物是
/0[xX][0-9a-fA-F]+/
/0x[0-9a-f]+/i
/0x[\h]+/i
Run Code Online (Sandbox Code Playgroud)
添加更多 - 如果0x需要是可选的(如问题所示):
/(0x)?[0-9a-f]+/i
Run Code Online (Sandbox Code Playgroud)
sma*_*thy 17
没什么大不了的,但大多数正则表达式引擎都支持POSIX字符类,并且有[:xdigit:]匹配的十六进制字符,这比普通的0-9a-fA-F东西更简单.
因此,请求的正则表达式(即可选0x)是:/(0x)?[[:xdigit:]]+/
Ada*_*ane 10
值得一提的是,检测MD5(这是其中一个示例)可以通过以下方式完成:
[0-9a-fA-F]{32}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Perl 或 PHP,则可以替换
[0-9a-fA-F]
Run Code Online (Sandbox Code Playgroud)
和:
[[:xdigit:]]
Run Code Online (Sandbox Code Playgroud)
小智 6
只是为了记录,我将指定以下内容:
/^[xX]?[0-9a-fA-F]{6}$/
Run Code Online (Sandbox Code Playgroud)
不同之处在于它检查它是否必须包含六个有效字符以及小写或大写的 x(如果有的话)。
小智 5
另一个示例:css 颜色的十六进制值以井号或井号 (#) 开头,然后是六个字符,可以是数字或 A 和 F 之间的字母(含)。
^#[0-9a-fA-F]{6}
Run Code Online (Sandbox Code Playgroud)