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

TCP标志验证正则表达式故障排查与修正求助

TCP标志验证正则解决方案

修正后的正则表达式

^(?:(?!.*(.).*\1)[AFPRSU]+|[1-9]\d*)$

正则说明

  • ^ 和 $:强制匹配整个输入字符串,彻底避免部分匹配(比如AFPx100这类混合非法字符的输入会被直接排除)
  • 双分支结构(用非捕获组(?:...)包裹):
    1. TCP标志分支:(?!.*(.).*\1)[AFPRSU]+
      • (?!.*(.).*\1):负前瞻断言,确保字符串中没有重复的标志字符(捕获任意一个标志后,检查后续是否存在相同字符)
      • [AFPRSU]+:匹配1个或多个合法的TCP标志(仅允许大写A/F/P/R/S/U)
    2. 整数等效值分支:[1-9]\d*
      • [1-9]:确保整数以非零开头,避免前导零
      • \d*:匹配后续任意数量的数字(支持1位或多位正整数)

原正则缺陷分析

  1. 部分匹配漏洞:原正则分支分别绑定^和$,导致只要输入的开头或结尾匹配某一分支就会判定合法,比如AFPx100的开头AF匹配标志分支,直接通过验证。
  2. 重复检查不彻底:仅通过(?!\1)检查相邻字符不重复,无法识别非相邻的重复标志(比如AFPA会被误判合法)。
  3. 字符范围不严谨:标志分支未限制只能是指定大写字符,整数分支的后顾(?<![A-z])范围过大,且未限制结尾,导致100a这类非法输入漏判。

验证效果

  • 合法输入全部匹配:A、AFP、FPURA、18、1、40
  • 非法输入全部排除:空值/空白、AA、aFP、a100、100a、XFP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:45:35