#regex
#регулярное выражение
Вопрос:
Я пытаюсь создать регулярное выражение для обнаружения операторов if без скобок в Javascript из традиционных операторов if.
Я пытаюсь обнаружить такие операторы, как этот:
if (foo) doSomething();
без обнаружения следующего оператора:
if (foo) {
doSomething();
}
До сих пор я придумал следующее выражение: if(s*)(.*)s(?!{)
которое позволяет мне обнаруживать большинство операторов if без скобок, нечувствительных к пробелам между if
и условием.
Однако это выражение также запускается для операторов, подобных следующему, из-за закрывающей круглой скобки вызова функции:
if (foo()) {
doSomething();
}
Есть ли способ предотвратить это или это принципиально невозможно?
Комментарии:
1. Вероятно, вам лучше использовать существующий анализатор javascript, но для решения вашей непосредственной проблемы вы могли бы соответствовать
if[^{]*$
. Это также будет соответствовать условиям if с многострочными условиями, которые в любом случае выполняло ваше текущее регулярное выражение.
Ответ №1:
Что-то вроде /if.*)s*(?!{)s*ns*(?!{)/gm
Конечно, оно все равно будет соответствовать строкам, JSX и так далее