Javascript 如何查找与正则表达式组不匹配的所有行

Javascript 如何查找与正则表达式组不匹配的所有行,javascript,regex,regex-negation,Javascript,Regex,Regex Negation,根据这一点,我尝试使用^.*(!http)。*$查找所有不包含字符串http,但运气不佳的行 正文: 对这个问题有什么想法吗?谢谢 现场演示: 首先,要以您正在寻找的方式对其进行测试,请打开“多行”模式。^字符表示所有文本的开头。(如果没有dotall,*序列将不会通过新行,但如果启用多行模式,则不需要dotall。) 我认为这个表达式应该满足您的要求,但它在该页面上不起作用(我猜是因为突出显示了换行符的问题): 然而,它在这里工作: alert( /^(?!.*?http).*$/gm

根据这一点,我尝试使用
^.*(!http)。*$
查找所有不包含字符串
http
,但运气不佳的行

正文:

对这个问题有什么想法吗?谢谢

现场演示:

首先,要以您正在寻找的方式对其进行测试,请打开“多行”模式。
^
字符表示所有文本的开头。(如果没有dotall,
*
序列将不会通过新行,但如果启用多行模式,则不需要dotall。)

我认为这个表达式应该满足您的要求,但它在该页面上不起作用(我猜是因为突出显示了换行符的问题):

然而,它在这里工作:

alert(
    /^(?!.*?http).*$/gm.exec('abhttpc\nq')
)
如果不需要空行,可以将上面的正则表达式替换为:

^(?!.*?http).+$
这确实显示了您可能正在寻找的结果:

我们表达式之间的区别在于,您的表达式允许表达式查找后面没有“http”的任意数量的字符,然后查找后面的任意数量的字符。因此,对于生产线:

"NetworkError: 404 Not Found - http://wap-uat01.webuat.opg/finance/img/arrow.gif"
…你的表情

^.*(?!http).*$
…将尽其所能不立即遇到
http
,即
“NetworkError:404 Not Found-
(即在空格前停止)并接受它,然后继续执行最后的
http://wap-uat01.webuat.opg/finance/img/arrow.gif“
code(即以空格开头的代码),一直走到队伍的尽头

但是,在我修改过的代码中,它排除了在行首之后的任何位置都可以找到“http”的情况,如果找不到,则在结果中包括直到行尾的所有字符(请记住,
(?!…)
检查实际上没有使用任何字符):


当然,谢谢——请注意,我已经提供了一个更新,解释了我们表达式之间的效果差异……抱歉,但似乎不适用于live demo,在控制台中获得了
[“”]
。您可能想使用
控制台.log(/^(?。*?http)。+$/gm.exec(t))
(即,使用
+
),因为我的代码也在抓取空行(即,从开始到结束没有
http
,即使是空的)在你的回答中,
+
*
*?
*?
*+
我仍然不清楚它们之间的区别,我应该在什么时候使用它们?谢谢。让我们来看看空格是必要的吗?我很想压缩它们…我认为这不会改变基本问题,对吗?@icedwater抱歉,我真的不明白什么t你的意思是
是必要的
。我的意思是文本行之间添加的空白行可以删除,但仍然不能改变你的问题是关于多行上的regexp的事实。例如
404未找到
19ms
看起来比
404未找到


19ms
更紧凑。是的当然,文本行可以删除。
"NetworkError: 404 Not Found - http://wap-uat01.webuat.opg/finance/img/arrow.gif"
^.*(?!http).*$
^(?!.*?http).+$