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

如何修改正则表达式,避免匹配跨多行的15位数字组合?

解决正则跨多行匹配的问题

原正则表达式 \d(?:\D?\d){14}(?!\d) 之所以会错误匹配跨多行的数字组合,核心原因是 \D 会匹配包括换行符在内的所有非数字字符,导致分散在不同行的数字能被凑够15个完成匹配。

要解决这个问题,只需把正则里的 \D 替换为排除换行符的非数字字符集合 [^\d\n],这样就限制了非数字分隔符只能是同一行内的字符,不会跨越多行。

修改后的正则表达式:

\d(?:[^\d\n]?\d){14}(?!\d)

效果验证

  • 原有的正确匹配示例(同一行内的数字+非数字组合)依然可以正常命中:
    • #19-04-052-320-008-55
    • 19 04 052 320 008 75
    • 19/04/052/320/0/0/8/8/0
    • 190405232000895
  • 跨多行的数字组合(比如你给出的分散在多行的数字串)会被直接排除,因为换行符不再被当作允许的非数字分隔符,无法将不同行的数字凑成符合要求的15位序列。

内容的提问来源于stack exchange,提问作者DanielAttard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:40:35