我需要从sessionStorage存储和检索正则表达式。遗憾的是,RegExp的字符串表示形式不是有效的RegExp模式。
基本上,我需要下面的代码片段返回true。var originalExpression = /SomeRegularExpression/;
var newExpression = new RegExp( originalExpression.toString() );
document.write("Are equals: " + (originalExpression.toString() == newExpression.toString()));
我事先不知道正则表达式是怎样的。我所知道的是,我有一个变量与正则表达式(实际上是一个数组或regexp),我需要存储它,然后,检索它。
是否有一些神奇的属性或推荐的方法来做到这一点?
您只需将RegExp.source
属性保存到SessionStorage:
var originalExpression = /SomeRegularExpression/;
var newExpression = new RegExp( originalExpression.source );
您还可以通过查询各种属性(例如global
, ignoreCase
)来保留标志
您可以使用regex的.source
属性来存储它:
var newExpression = new RegExp( originalExpression.source );
console.log("Are equals: " + (originalExpression.toString() == newExpression.toString()));
Are equals: true
或者使用:
var newExpression = new RegExp( originalExpression.source,
originalExpression.toString().replace(/.*//, '') );
您不需要将其转换为字符串,因为现在允许使用这种语法:
var myRegexObject = new RegExp(/mypattern/im);
那么,这应该可以工作:
var originalExpression = /SomeRegularExpression/;
var newExpression = new RegExp( originalExpression );
console.log("Are equals: " + (originalExpression.toString() == newExpression.toString()));