当前位置: 首页 > 知识库问答 >
问题:

Regex-匹配除特定字符串之外的任何内容

方琦
2023-03-14

我需要一个正则表达式(将在ZF2路由中使用,我相信它使用php的preg_match),匹配除特定字符串之外的任何内容。

比如:我需要搭配除了“红”、“绿”、“蓝”之外的任何东西。

我目前有正则表达式:

^(?!red|green|blue).*$

test -> match (correct)
testred -> match (correct)
red -> doesn't match (correct)
redtest -> doesn't match (incorrect)

在最后一种情况下,正则表达式的行为不像我希望的那样。它应该与“redtest”匹配,因为“redtest”不是(“红色”、“绿色”或“蓝色”)。

有关于如何修复正则表达式的想法吗?

共有3个答案

东门晓博
2023-03-14

像这样的正则表达式包括第二个块的条件——YOUR _ REGEXP,和第一个块的排除条件。在这种情况下,如果你的字符串将包含红色,绿色或蓝色的结果将总是假的

'(?si)(?!.*(red|green|blue).*)(.*(YOUR_REGEXP).*)'
燕扬
2023-03-14

也许这个正则表达式可以帮助您:

^(?!red|green|blue)(.+)|(.+)(?<!red|green|blue)$

看看这个,在鲁普勒斯。

唐俊爽
2023-03-14

您可以在前瞻中包含字符串锚的末尾

 ^(?!(red|blue|green)$)
 类似资料:
  • 我正在寻找一个可以在字符串1和字符串2中为abc.xyz返回true的regex。注意字符串值可以从abc.xyz更改为mnp.pqr 我尝试使用这个,但它与字符串2不匹配。

  • 我在创建正则表达式以匹配这些内置组时需要一些帮助: 我尝试了以下匹配模式,但它给了我一些错误: 错误代码: 这是预览:https://regex101.com/r/WKal3Y/1

  • 想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 https:www.google。com/;ParamName=项目;AccessKey=PDJKJDSJJKNEIOWEMCL/dsjdkhfjf=;值=xyz 在这里,我想用一些虚拟字符串替换值并返回整个字符串。 预期输出:<代码>https:www.google。com/;ParamName=项目;AccessKey=dummyVa

  • 我尝试了这种模式,但发现第一个匹配的句子带有符号

  • 我有这些线。我希望有一个正则表达式来匹配它们,并在将它们传递给preg_match函数时返回true。 如何在正则表达式中创建与上述模式匹配的模式?像这样: 星号(*)表示任何单词。这是我目前掌握的正则表达式模式: 格式在单词上不匹配。如何在单词上匹配字符串?

  • 我对正则表达式是新手。 以下是我到目前为止在C#中所做的工作 显然,这并不违反所有指定的规则。有人能给点提示吗?