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

如何编写匹配除两个特定字符串外所有内容的正则表达式?

解决方案

你需要的正则表达式应该是:

^(?!(STRING1|STRING2)$).*$

为什么之前的写法不符合需求:

  • 第一个正则 ^(?!STRING1|STRING2).*$ 里的(?!STRING1|STRING2)是起始位置的负前瞻,它会直接排除所有以STRING1或STRING2开头的字符串,所以STRING1X这类字符串会被错误拦截。
  • 第二个正则 ^(?!STRING1|STRING2)$ 逻辑完全错误:^$仅匹配空字符串,再加上负前瞻后,实际没有任何内容能满足匹配条件。

正确正则的逻辑:

(?!(STRING1|STRING2)$) 这个负前瞻的作用是检查整个字符串不能完全等于STRING1或STRING2,只要字符串不是这两个值本身,不管内容是什么、长度多少,都会被.*$匹配到。比如:

  • 会匹配:STRING1X、abc、STRING2_xxx、123
  • 不会匹配:STRING1、STRING2

如果不需要匹配空字符串,可以把.*替换成.+,正则变为:

^(?!(STRING1|STRING2)$).+$

内容的提问来源于stack exchange,提问作者www.admiraalit.nl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:04:57