我有以下正则表达式可以方便地匹配包含以下内容的所有行console.log()
or alert()
在支持 PCRE 的编辑器中打开的任何 javascript 文件中都可以使用该函数。
^.*\b(console\.log|alert)\b.*$
但我遇到很多文件包含window.alert()
用于提醒重要消息的行,我不想删除/替换它们。
所以问题是如何正则表达式匹配(单行正则表达式,无需频繁运行)包含的所有行console.log()
and alert()
但不包含单词window
。另外如何转义无法转义的圆括号(圆括号)\
,使它们成为字符串文字的一部分?
我尝试遵循正则表达式但徒劳:
^.*\b(console\.log|alert)((?!window).)*\b.*$
您应该使用负查找头,如下所示:
^(?!.*window\.).*\b(console\.log|alert)\b.*$
负向查找头将断言如果字符串是不可能匹配的window.
存在。
正则表达式演示 https://regex101.com/r/fN4iJ7/1
至于括号,你可以用反斜杠转义它们,但是因为你有一个单词边界字符,所以如果你放转义的括号,它不会匹配,因为它们不是单词字符。
元字符 \b 是一个锚点,就像插入符号和美元符号一样。
它在称为“单词边界”的位置进行匹配。这场比赛
是零长度。
三种不同的位置都可以作为单词边界:
- 在字符串中的第一个字符之前,如果第一个字符是
单词字符。
- 在字符串中的最后一个字符之后,如果最后一个
字符是单词字符。
- 在字符串中的两个字符之间,
其中一个是单词字符,另一个不是单词字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)