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

如何用正则表达式提取字符串中无分隔符的连续数字

解决方案

要从你的字符串中仅捕获无分隔符的连续数字(排除带内部-的数字串),可以使用以下正则表达式:

(?<!\d-)-?(\d+)(?!-\d)

匹配逻辑拆解

这个正则的每一部分都在精准筛选目标内容:

  • (?<!\d-): 负向回顾后发断言,确保匹配内容的前面不是数字-的结构——这样就能排除像123-456里的456这类属于带分隔符串的片段
  • -?: 匹配可选的负号前缀,兼容像-12323232这种带负号的纯数字串
  • (\d+): 核心捕获分组,专门匹配连续的数字,也就是你最终需要提取的目标内容
  • (?!-\d): 负向先行断言,确保匹配内容的后面不是-数字的结构——排除像123-456里的123这类带分隔符的片段

实际测试结果

把这个正则应用到你的字符串 Acc:123-456-789、-12323232、7894596 上,会得到完全符合预期的捕获结果:

  • 分组1: 12323232
  • 分组2: 7894596

关于你尝试的正则问题

你之前使用的 -*(?!\d*(?:\d*-)$)\d*$ 之所以达不到预期,主要有两个原因:

  1. 它依赖$锚定行尾,但你的目标数字并不都在字符串末尾,无法覆盖所有场景
  2. 负向预查的逻辑没有精准区分"内部带分隔符的数字串"和"带负号的纯数字串",导致无法正确排除不需要的内容

内容的提问来源于stack exchange,提问作者Hatem Ahmed Gamil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:09:36