Regexp to和from字符串



我需要从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()));

相关内容

最新更新