【发布时间】:2016-05-23 15:04:42
【问题描述】:
我有以下正则表达式可以方便地匹配在支持 PCRE 的编辑器中打开的任何 javascript 文件中包含 console.log() 或 alert() 函数的所有行。
^.*\b(console\.log|alert)\b.*$
但我遇到许多包含window.alert() 行的文件,用于提醒重要消息,我不想删除/替换它们。
所以问题是如何正则表达式匹配(单行正则表达式,无需频繁运行)包含console.log() 和alert() 但不包含单词window 的所有行。还有如何转义 \ 无法转义的圆括号(括号),使它们成为字符串文字的一部分?
我尝试了以下正则表达式但徒劳无功:
^.*\b(console\.log|alert)((?!window).)*\b.*$
【问题讨论】:
-
如果他们两个都不在会发生什么?是否必须一个人在场而另一个人不在场?
-
如果两个字符串都不存在,则不匹配,因为它不是我要替换/删除的行,如果
window和alert都在同一行,如window.alert()那么它不应该匹配,所以alert或控制台应该在那里,但在同一行window不应该出现。简而言之,仅匹配具有alert()或console.log()而没有window的行。 -
您能否详细说明您的意思:“如何转义 \ 无法转义的圆括号(括号),使其成为字符串文字的一部分”?你到底需要什么?无需在字符串中转义
(和),您可以在正则表达式中使用反斜杠来转义它们。 -
我试图通过
^(?!.*window\.).*\b(console\.log|alert\()\b.*$在同一个正则表达式中完全匹配alert(,但正如您在演示链接中看到的那样,它不起作用。 regexr.com/3dfls -
从最后一个
^(?!.*window\.).*\b(console\.log|alert\().*$中删除\b
标签: javascript regex editor pcre