я так понимаю что вопрос у вас поставлен неверно, если -
"Моя задача - удалить переменные из кода."
и судя по тексту -
"которая будет проверять, закрыта ли кавычка (двойная и (или) одинарная)"
"Точка с запятой может ведь быть частью значения переменной (если переменная хранит строку). "
удалять вы собираетесь все строковые переменные?
тогда вам необходимо матчить (находить) строковые переменные, а не проверять есть ли , нет кавычки и пр. Вопрос некорректно поставлен!?
вот регулярка, матчит строковые переменные как начинающиеся, так и без модификаторов (можете добавить свои по вкусу), в данном случае это модификаторы JavaScript const, var, let:
((const|var|let)\s+)?([\w]+)\s*=\s*("[^"]+");?
PS: работает в NotePad++
то что попадает внутрь () запоминается в переменные \1 \2 \3 \4
\3 - название переменной
\4 - собственно сама строка
Upd:
выше написал пример с двойными кавычками "
для апострофов проще сделать такую же регулярку заменив в регулярке выше двойные на апострофы и использовать два регулярных выражения, чем городить и пытаться все сделать на одной регулярке.
ведь если строка в апострофах, то внутри свободно могут быть кавычки двойные, в этом случае...... думаю регулярку то можно написать, но уж сильно сложнее и запутаннее будет.
Upd2:
хотя нет, не сильно сложнее :)
((const|var|let)\s+)?([\w]+)\s*=\s*("[^"]+"|'[^']+');?
Upd3:
если в конце всегда будет
; и перенос строки
то можно так:
((const|var|let)\s+)?([\w]+)\s*=\s*(".*"|'.*');$