正则字符串的正则表达式

时间:2015-10-16 21:54:19

标签: javascript regex

我需要从sessionStorage存储和检索正则表达式。不幸的是,RegExp的字符串表示形式不是有效的RegExp模式。

基本上,我需要以下代码片段才能返回true。

var originalExpression = /SomeRegularExpression/;
var newExpression = new RegExp( originalExpression.toString() );

document.write("Are equals: " + (originalExpression.toString() == newExpression.toString()));

我事先不知道正则表达式是怎样的。我所知道的是,我有一个带有正则表达式的变量(实际上是一个数组或RegExps),我需要存储它,然后检索它。

是否有一些神奇的属性或推荐的方法呢?

3 个答案:

答案 0 :(得分:2)

您只需将RegExp.source属性保存到SessionStorage:

var originalExpression = /SomeRegularExpression/;
var newExpression = new RegExp( originalExpression.source );

您还可以通过查询各种属性来保留标记(例如globalignoreCase)。

答案 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()));
相关问题