我需要从sessionStorage存储和检索正则表达式。不幸的是,RegExp的字符串表示形式不是有效的RegExp模式。
基本上,我需要以下代码片段才能返回true。
var originalExpression = /SomeRegularExpression/;
var newExpression = new RegExp( originalExpression.toString() );
document.write("Are equals: " + (originalExpression.toString() == newExpression.toString()));
我事先不知道正则表达式是怎样的。我所知道的是,我有一个带有正则表达式的变量(实际上是一个数组或RegExps),我需要存储它,然后检索它。
是否有一些神奇的属性或推荐的方法呢?
答案 0 :(得分:2)
您只需将RegExp.source
属性保存到SessionStorage:
var originalExpression = /SomeRegularExpression/;
var newExpression = new RegExp( originalExpression.source );
您还可以通过查询各种属性来保留标记(例如global
,ignoreCase
)。
答案 1 :(得分:1)
您可以使用正则表达式的.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(/.*\//, '') );
答案 2 :(得分:0)
您不需要将其转换为字符串,因为现在允许使用此语法:
var myRegexObject = new RegExp(/mypattern/im);
所以,这应该有效:
var originalExpression = /SomeRegularExpression/;
var newExpression = new RegExp( originalExpression );
console.log("Are equals: " + (originalExpression.toString() == newExpression.toString()));