У меня есть следующее регулярное выражение, которое соответствует всем строкам, содержащим console.log()
или alert()
функции в любом файле javascript, открытом в редакторе, поддерживающем PCRE.Регулярное выражение для строк, содержащих одну строку и не содержащую другую строку
^.*\b(console\.log|alert)\b.*$
Но я встречаю много файлов, содержащих window.alert()
линии для оповещения важных сообщений, я не хочу, чтобы удалить/заменить их.
Таким образом, вопрос, как регулярное выражение-матч (однолинейная регулярное выражение без необходимости часто запускать) все строки, содержащие console.log()
и alert()
, но не содержащие слово window
. Также, как избежать круглых скобок (скобки), которые не подлежат отмене \
, чтобы сделать их частью строкового литерала?
Я попробовал следующее регулярное выражение, но напрасно:
^.*\b(console\.log|alert)((?!window).)*\b.*$
Что произойдет, если их обоих нет? обязано ли присутствовать, а другое отсутствует? – rock321987
Если обе строки не существуют, то нет совпадений, поскольку это не та строка, которую я хочу переписать/удалить. Если 'window' и' alert' находятся в одной строке, такой как 'window.alert()', то она не должна совпадать поэтому 'alert' или консоль должны быть там, но в той же строке' window' shoudn't быть. Короче говоря, линии соответствия имеют 'alert()' или 'console.log()' и не имеют 'window'. –
Можете ли вы уточнить, что вы подразумеваете под этим: _ «как избежать круглых скобок (скобок), которые не могут быть сохранены в \, чтобы сделать их частью строкового литерала« _? Что именно вам нужно? Нет необходимости скрывать '(' и ')' в строках, и вы можете избежать их, используя обратную косую черту в регулярных выражениях. –