Это может показаться ответным путем ... но я бы предложил против этого. Выполнение любых манипуляций с строкой для их изменения было бы практически невозможно. В дополнение к спискам аргументов определения функций вам также необходимо пропустить текст в строковых литералах или литералах регулярных выражений или вызовах функций или литералах массивов или литералах объектов или объявлениях переменных ... может быть, даже больше. Regex не может справиться с этим, включив и выключив, так как вы видите, что ключевые слова не могут справиться с этим.
Если вы действительно хотите их преобразовать, вам действительно нужно разобрать код и выяснить, какие из них являются оператором запятой. Кроме того, там могут быть некоторые случаи, когда присутствие запятая является отношение:
var a = 10, 20;
не то же самое, как
var a = 10; 20;
, например.
Так что я действительно не думаю, что вы должны попробовать. Но если вы этого захотите, я начну с поиска парсера javascript (или написав один, это не супер сложно, но, вероятно, он займет большую часть дня и может все еще быть ошибкой). Я уверен, что более продвинутые мини-инструменты, такие как Google, включают парсер, возможно, их источник поможет.
Затем вы разбираете его, чтобы найти фактические выражения запятой. Если используется возвращаемое значение, оставьте его в покое. Если нет, замените их выражениями, а затем восстановите строку исходного кода. Вы можете продолжить и отформатировать его на основе отступки области в это время тоже. Это может показаться довольно хорошим. Это будет просто кусок работы.
Вот парсер библиотека, написанная в JS: http://esprima.org/ (благодаря @torazaburo на этот комментарий)
Почему вы хотите конвертировать «» к „;“? Вы знаете regexp? – Aravind
Да, но это не так просто, как замена всех запятых на точки с запятой. совпадение на основе шаблона не могло отличить разницу между запятыми между аргументами и фактическим оператором запятой. Я хочу преобразовать его из-за удобочитаемости (с большим объемом данных, его очень трудно читать) –
Вы можете просто «пропустить» текст, когда вы сталкиваетесь с строкой, которая начинается с «function» и заканчивается на «{». – Aravind