javascript上的正则表达式能否以感叹号开头?

javascript上的正则表达式能否以感叹号开头?,javascript,regex,negation,Javascript,Regex,Negation,好的,让我澄清一下,我有一个用户界面,用户可以根据他们的产品标题搜索产品,它的构建方式是,你不需要键入完整的确切标题来获得匹配。基本上,它在find方法中使用“$regex”操作符,因此如果我键入/banana/它将检索标题中包含单词banana的任何产品 这样做的好处在于,如果我键入: /^((?!香蕉)。)*$/ 它否定它,并返回任何不包含单词banana的产品 我试图实现的是以更友好的方式向用户提供否定功能,而不是使用上面的整个正则表达式。 所以我想告诉用户在文本的开头使用感叹号,然后在引

好的,让我澄清一下,我有一个用户界面,用户可以根据他们的产品标题搜索产品,它的构建方式是,你不需要键入完整的确切标题来获得匹配。基本上,它在find方法中使用“$regex”操作符,因此如果我键入/banana/它将检索标题中包含单词banana的任何产品

这样做的好处在于,如果我键入: /^((?!香蕉)。)*$/

它否定它,并返回任何不包含单词banana的产品

我试图实现的是以更友好的方式向用户提供否定功能,而不是使用上面的整个正则表达式。

所以我想告诉用户在文本的开头使用感叹号,然后在引擎盖下用这个正则表达式包装替换它。问题是,如果有任何以感叹号开头的有效正则表达式,我将失去功能,因为我将始终使用否定包装替换搜索标记。这有意义吗


谢谢

请提供一种方法,使用
否定整个匹配/regex/.test(str)
这实际上是有道理的,没有考虑到在regex之外求反的选项,谢谢你可以让用户用
\,逃过一个感叹号
“!foo”
。或者提供一个否定的复选框,或者别的什么。没有什么是完全直观的,它似乎有点罕见,所以只要你记录它,它应该足够好。(是的,如果可以的话,用否定来实现它,而不是
(?!…).
)“我试图实现的是以一种更友好的方式将否定功能提供给用户,而不是使用上面的整个正则表达式。”--首先,你为什么要求用户输入
regex
?让她输入一个字符串,并使用复选框进行否定。然后使用片段(文本和复选框的状态)在执行搜索的代码中在幕后创建
regex
。这就是为什么它被称为“用户界面”。我理解你在@axiac说什么,但我们已经在使用操作符(>,=,