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

正则表达式问题:无法正确匹配不含特定子串且满足多条件的字符串

正则表达式修正方案

问题分析

你写的正则之所以会匹配所有字符串,核心问题在于否定预查的位置错误:

  • .*(?!.*0DS906555B) 中,.* 是贪婪匹配,会先吃掉大部分字符,然后正则引擎会通过回溯找到一个位置,使得该位置之后没有0DS906555B——哪怕字符串前面已经包含这个子串,回溯后依然能满足断言,导致过滤失效。

修正后的正则表达式

^(?!.*0DS906555B).*2701222122(500[3-9]|501[0-2]).*$

规则拆解

  • ^(?!.*0DS906555B):开头的否定预查,确保整个字符串中不存在0DS906555B,从根源上过滤不符合条件的字符串。
  • .*2701222122:匹配包含目标子串2701222122的内容。
  • (500[3-9]|501[0-2]):精准匹配5003-5012的范围:
    • 500[3-9]:覆盖5003到5009
    • 501[0-2]:覆盖5010到5012
  • .*$:匹配后续任意剩余字符。

测试验证

用你的示例字符串测试:

  • FL_0DS906555B_3661_27012221225012_V001_S:因为包含0DS906555B,会被过滤,不匹配。
  • FL_0DS906555C_3661_27012221225012_V001_S:满足所有条件,会被匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:45:21