Можно ли написать регулярку, которая будет проверять, закрыта ли кавычка (двойная и (или) одинарная) в случае, если вообще она (кавычка) есть?
================================================================================================================================================

 Здравствуйте.  
  

Можно ли написать регулярку, которая будет проверять, закрыта ли кавычка (двойная и (или) одинарная) в случае, если вообще она (кавычка) есть?  
  

Моя задача - удалить переменные из кода. Я знаю, с чего начинаются переменные (с модификаторов и имени), а вот чем заканчиваются - не знаю. Точка с запятой может ведь быть частью значения переменной (если переменная хранит строку).   
  

Я хочу с помощью регулярок смотреть - если строка начата (есть открывающая двойная или одинарная кавычка), то точка с запятой не является концом объявления переменной и нужно продолжать поиск конца переменной. 

 Регулярки не смогут разобраться с множественными и вложенными кавычками. 

 я так понимаю что вопрос у вас поставлен неверно, если - **"***Моя задача - удалить переменные из кода.***"**  

и судя по тексту -   

"которая будет проверять, закрыта ли кавычка (двойная и (или) одинарная)"  

"Точка с запятой может ведь быть частью значения переменной (если переменная хранит строку). "  
**удалять вы собираетесь все строковые переменные?**  
  

тогда вам необходимо матчить (находить) строковые переменные, а не проверять есть ли , нет кавычки и пр. Вопрос некорректно поставлен!?  
  

> ((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*(".*"|'.*');$