好吧,我现在感觉很浓。基本上,我想定义一个JavaScript正则表达式,该表达式将匹配除特定字符串外的所有内容。所以说我有琴弦
"dog"
或者
"cat"
我想要一个独立的正则表达式,这样它将与字符串匹配
"dogsled"
或字符串
"cattle"
只是不能单独使用“狗”或“猫”。我已经尝试过了,基本上是说,忽略了任何以“cat”或“dog”开头的内容,而这并不是我真正需要的...
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,为“catsled”返回false,对于“cattle”返回true
最佳答案
我会选择简单地否定一个匹配项,如Linus Kleen's answer中所述。但是,如果您绝对必须在正则表达式中(或出于学习经验等目的)完成所有操作,那么我认为以下方法应该有效:
^((dog|cat(?!$)).+|(?!dog|cat).+)$
这交替使用两个否定的前行。第一个表示“匹配
cat
或dog
,如果不跟在字符串字符($
)的末尾,再跟其他任何字符”。这匹配了dogsled
和cats
以及类似性质的东西。替换的后半部分说:“确保字符串(
^
)的开头不跟在dog
或cat
(因此不要以任何一个开头),然后匹配任何内容”。这可以让您获得任何不以cat
或dog
开头的单词(例如banana
)。Here's an example on regexpal。
关于javascript - 定义匹配除特定字符串以外的任何内容的JavaScript正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8853187/