gpt4 book ai didi

javascript - 定义匹配除特定字符串以外的任何内容的 JavaScript 正则表达式

转载 作者:可可西里 更新时间:2023-11-01 02:22:57 25 4
gpt4 key购买 nike

好吧,我现在感觉很厚。基本上,我想定义一个 JavaScript 正则表达式,它可以匹配任何除了 的特定字符串。所以说我有字符串

"dog"

"cat"

我想要一个独立的正则表达式来匹配字符串

"dogsled"

或字符串

"cattle"

只是不是“狗”或“猫”本身。我试过这个,基本上是说,忽略任何以“猫”或“狗”开头的东西,这不是我需要的......

var pattern= /^(?!dog|cat).+/

pattern.test("cat") // false, as expected
pattern.test("dog") // false, as expected
pattern.test("bananananana") // true
pattern.test("dogsled") // false, but the regexp I want would return true

这一定很简单....谢谢!

编辑澄清一下,我不想对返回值做任何否定来获得我想要的结果——正则表达式应该为“dog”返回 false,为“dogsled”返回 true,为“cat”返回 false,为“cattle”返回 true

最佳答案

我会选择简单地否定匹配项,如 Linus Kleen's answer 中所述.但是,如果您绝对必须在正则表达式中完成所有操作(或为了学习经验或其他),那么我认为以下内容应该有效:

^((dog|cat(?!$)).+|(?!dog|cat).+)$

这在交替中使用了两个负先行。第一个说“如果 catdog 后面没有字符串结尾字符 ($),则匹配其他任何内容”。这匹配 dogsledcats 以及类似的东西。

交替的后半部分说“确保字符串 (^) 的开头后面没有 dogcat (所以它不以其中任何一个开头),然后匹配任何东西”。这将为您提供任何不以 catdog 开头的单词(例如 banana)。

Here's an example on regexpal .

关于javascript - 定义匹配除特定字符串以外的任何内容的 JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8853187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com