Об удалении квотированных строк из текста JavaScript

в 14:33, , рубрики: php, Регулярные выражения, метки: ,

Как часть программы анализа исходных кодов было необходимо вырезать из JavaScript все строковые литералы. Сначала на PHP был реализован state based парсер, но это было медленно и уныло. А сделать быстро получилось с помощью регулярных выражений.

Источником вдохновения послужил пост на stackoverflow. В результате получилось следующее решение:
return preg_replace('/(
"[^"\\]*(?:\\.[^"\\]*)*" # match double quoted string
|
'[^'\\]*(?:\\.[^'\\]*)*' # match single quoted string
|
(?s:\/\*.*?\*\/) # multiline comments
|
\/\/.*?\n # singleline comments
|
string.replace\(\/[^\/\\]*(?:\\.[^\/\\]*)*\/ # an JS regexp
)/x', '', $str);

И это во много раз быстрее анализатора, 50-ть строчек которого канули в Лету.

Автор: qMBQx8GH


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js