好的,我现在感觉很厚.基本上,我想定义一个JavaScript正则表达式,它将匹配除了特定字符串之外的任何东西.所以说我有字符串
"dog"
Run Code Online (Sandbox Code Playgroud)
要么
"cat"
Run Code Online (Sandbox Code Playgroud)
我想要一个单独的正则表达式,以便它匹配字符串
"dogsled"
Run Code Online (Sandbox Code Playgroud)
或者字符串
"cattle"
Run Code Online (Sandbox Code Playgroud)
本身就不是"狗"或"猫".我试过这个,基本上说,忽略任何以"猫"或"狗"开头的东西,这不是我需要的......
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
Run Code Online (Sandbox Code Playgroud)
这一定很简单....谢谢!
编辑 只是为了澄清,我不想对返回值做任何否定以得到我想要的结果 - 正则表达式应该为"dog"返回false而对于"dogled"则为true,对于"cat"则为false而对于"cattle"则为true "
如Linus Kleen所说,我会选择简单地否定一场比赛.但是,如果你绝对必须在正则表达式(或学习经验或其他东西)中完成所有这些,那么我认为以下内容应该有效:
^((dog|cat(?!$)).+|(?!dog|cat).+)$
Run Code Online (Sandbox Code Playgroud)
这在交替中使用两个负向前瞻.第一个说"匹配cat或者dog如果它后面没有字符串字符的结尾($),后跟其他任何东西".这匹配dogsled和cats那种性质的东西.
交替的后半部分说"确保字符串(^)的开头没有后跟dog或cat(因此它不会以其中任何一个开头),然后匹配任何东西".这可以为您提供任何不以cat或dog(如banana)开头的单词.
| 归档时间: |
|
| 查看次数: |
6220 次 |
| 最近记录: |