Это немного загадка, у меня есть представление о том, как я могу ее исправить, но мне интересно, есть ли (намного) более простой способ.
Короче говоря, всякий раз, когда выполняется регулярное выражение в JavaScript, некоторым свойствам присваиваются значения в конструкторе RegExp
. Например:
/foo/.test('football')
//-> true
RegExp.input
//-> "football"
RegExp.rightContext
//-> "tball"
Я хотел бы выполнить регулярное выражение, не затрагивая эти свойства. Если это невозможно (и я не думаю, что это так), я бы хотел, по крайней мере, вернуть их к своим предыдущим значениям.
Я знаю, что input
/$_
можно записывать, но большинство других - нет. Один из вариантов может состоять в том, чтобы восстановить регулярное выражение, которое будет повторно использовать все эти значения, но я думаю, что это будет довольно сложно.
Причина, по которой я хочу это, заключается в том, что я пишу прокладку собственного API и тестируя ее с помощью набора test262. Сбой теста262 на некоторых тестах, где он проверяет, имеет ли объект RegExp неожиданные значения для этих свойств.