这有点棘手,我有一个修复的想法,但我想知道是否有(更)简单的方法。
简而言之,在JavaScript中执行正则表达式时,某些属性会在RegExp
构造函数上分配值。例如:
/foo/.test('football')
//-> true
RegExp.input
//-> "football"
RegExp.rightContext
//-> "tball"
我希望能够执行一个正则表达式而不影响这些属性。如果不可能(我认为这是不可能的),那么我至少希望在执行后恢复它们之前的值。
我知道 input
/$_
是可写的,但其他大部分属性似乎都不是。一种选择可能是重构一个正则表达式,重新应用所有这些值,但我认为这将非常困难。
我想要这样做的原因是因为我正在编写一个本地API的模拟器,并使用test262套件进行测试。test262套件在某些检查RegExp对象是否具有意外属性值的测试中失败了。