You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:匹配含空格、跨行的异常格式十六进制字符串的正则表达式

匹配带空格/跨多行的0x开头40位十六进制字符串的正则方案

直接上能满足需求的正则表达式:

/0x(?:\s*[a-fA-F0-9]){40}/gms

正则说明

  • 0x:锁定目标字符串的固定前缀,彻底避免误匹配类似acce这类无前缀的零散字符
  • (?:\s*[a-fA-F0-9]){40}:非捕获组重复40次,确保最终捕获到恰好40个十六进制字符:
    • \s*:匹配任意数量的空白字符(包括空格、换行、制表符),兼容字符串内有空格或跨多行的情况
    • [a-fA-F0-9]:匹配单个十六进制字符(大小写兼容)
  • 模式修饰符:
    • g:全局匹配,一次性找出文本中所有符合条件的字符串
    • m:多行模式,配合换行场景使用
    • s:让\s能匹配换行符,确保跨多行的字符串也能被完整捕获

测试验证

  1. 正常无空格场景:0x0D6185e7481968D82B51F07191F8dAa721b2Db10 → 完整匹配
  2. 含空格场景:0x0 D6185 e7481968D82B51F07191F8 dAa721b2Db10 → 忽略中间空格,匹配整个目标字符串
  3. 跨多行场景:
    access
    0x0D6185e7481968 
    D82B51F07191F8d
    Aa721b2Db10
    
    → 精准捕获从0x开始到最后一个十六进制字符的全部内容,无视换行
  4. 误匹配规避:文本中的access不会被触发匹配,因为缺少0x前缀

额外处理

如果需要提取纯十六进制字符(去掉所有空白符),可以在匹配后通过字符串替换处理:

const matchStr = '0x0 D6185 e7481968D82B51F07191F8 dAa721b2Db10';
const pureHex = matchStr.replace(/\s/g, '');
// 结果:0x0D6185e7481968D82B51F07191F8dAa721b2Db10

内容的提问来源于stack exchange,提问作者Matéo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:42:05