我需要一个JavaScript正则表达式来匹配以下内容:
afoobar
和
foobars
和
afoobars
但不是确切的短语
foobar
到目前为止我所拥有的是:
^(?!foobar).*$
在其他帖子中找到,但这似乎与以下情况相符:
foobars
我觉得我很接近,但似乎无法弄明白要添加什么。
感谢您的帮助。
修改
感谢所有答案 - 我的问题并没有完全正确。我还需要正则表达式来匹配其他所有内容。所以它不应该需要" foobar"在它是一个匹配。但如果字符串是完全foobar,那么它不应该匹配。
答案 0 :(得分:3)
一个简单的解决方案是这样的:
.*foobar.+|.+foobar.*
或更简单:
.foobar|foobar.
或者可能:
(?!^foobar$).*foobar
或者,如果您需要匹配包含foobar
(但不是foobar
本身)的任何单词,这些单词显示为较大字符串的一部分,您可以使用类似的内容(Demo) :
\b\w*foobar\w+\b|\b\w+foobar\w*\b
另请注意,如果您只是尝试匹配不 foobar
的任何字符串,请使用此字段:
(?!^foobar$)^.*$
或者更简单,只需测试您不想匹配的内容,并接受其他所有内容,如:
function notFoobar(input) { return 'foobar' !== input; }
答案 1 :(得分:0)
试试这个:^(?!foobar [s] * )。 $
答案 2 :(得分:0)
答案 3 :(得分:0)
以下是基于新要求的更新答案:
.+$(?<!^foobar)
这就是说,匹配所有东西一次或多次,包括行尾 - 除非你在你身后看,只看到foobar锚定到行的开头没有其他东西。
答案 4 :(得分:0)
简单的替换 - a?foobars|afoobars?