Что такое регулярное выражение, которое удалит все "function foo () {...}" и покажет другое содержимое? - PullRequest
1 голос
/ 21 июля 2010

То есть, учитывая файл Javascript, это регулярное выражение может показывать только «немедленное выполнение» кода, удаляя все определения функций в виде

function foo() {
  ...
}

Или регулярное выражение может найти «соответствие { } ", потому что может быть много вложенных { }

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Нет такого регулярного выражения. Причина основана на теории автоматов и грамматик. Язык

function foo() { ... }

может генерироваться грамматикой без контекста, но не обычной грамматикой. Для получения дополнительной информации посмотрите Википедию.

0 голосов
/ 21 июля 2010

Javascript - слишком сложный язык, чтобы его можно было надежно проанализировать с помощью регулярного выражения.Проблема не только в том, что вы упомянули о вложенных скобках;есть также тот факт, что почти все в строке следует игнорировать, что есть по крайней мере два способа определения функции и множество других проблем.

Кроме того, что бы вы сделали с function() { alert("Hello!"); }();?Это функция, но она выполняется немедленно.

По сути, вам понадобится какой-нибудь интерпретатор javascript или отладчик, чтобы увидеть, что работает, а что нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...