Не удается повторно использовать шаблон группы захвата внутри регулярного выражения JavaScript - PullRequest
0 голосов
/ 12 декабря 2018

Мой вопрос чем-то похож на этот вопрос .Однако мой вопрос отличается от следующего:

  • Вопрос был не задан с определенным вкусом.
  • Он не содержит ни одного изШаблон регулярных выражений в разновидности JavaScript, за исключением того, что только проверяет два уровня вложенности.
  • Он содержит только некоторые алгоритмы , которые мне не нужны, потому что япытаюсь выучить Regex.

Я пытаюсь выучить Regex, проверяя выражение как " Сбалансированные скобки ".

СбалансированноеКруглые скобки - это выражение, в котором каждый ( закрывается соответствующим )

Например, допустимы следующие выражения:

(1+2)*(2+5)
(1+2(3+4)-6)/(2+4)
((()))

Но, (3+4()недопустимо.
Для простоты предположим, что члены в скобках - это цифры и операторы.

Я использую регулярное выражение JavaScript.Итак, я попробовал следующее регулярное выражение.Тем не менее, не сработало .

^(\((?:[^()]|\1*)\)[^()]*)+$

Но, когда я попробовал приведенное ниже PCRE регулярное выражение, сработало хорошо .

^(\((?:[^()]|(?1))*\)[^()]*)+$

Единственная синтаксическая разница в обоих регулярных выражениях заключалась в том, как первая группа захвата использовалась повторно : \1 в JS и (?1) в PCRE.Я знаю, что \1 не является разновидностью subroutine, поэтому есть ли в JavaScript какие-либо альтернативы , кроме повторения всего шаблона снова?

Я знаю способ использования variables внутри RegExp конструктор.Но мое регулярное выражение вложено , и поэтому одно исключено.

...