Javascript存储Regexp螺丝原始格式

时间:2016-04-24 11:31:08

标签: regex stringify

我有一个角度应用程序,用户可以在表单中添加正则表达式,值如下:

github\.com/([A-Za-z0-9\-\_]+)/([A-Za-z0-9\-\_]+)

当我将它存储在localStorage中并检查localStorage时:

github\\\\.com\\/([A-Za-z0-9\\\\-\\\\_]+)\\/([A-Za-z0-9\\\\-\\\\_]+)

当我在其他地方的Javascript中检索此值时,我得到:

github\\.com\/([A-Za-z0-9\\-\\_]+)\/([A-Za-z0-9\\-\\_]+)

这不是原始的正则表达式,Javascript中的match方法无效。

注意:提交表单后,我将对象存储在:

localStorage.myobject = JSON.stringify(myobject);

1 个答案:

答案 0 :(得分:1)

你可以在这里摆脱过度消费,只需使用

github[.]com/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)

并通过RegExp构造函数初始化它,以便不必转义正则表达式分隔符/[]内的一个点失去了它的特殊含义,只匹配一个文字点,字符类末尾的连字符只与一个字面连字符匹配,而_根本不需要转义。在模式中:



var tst = "github.com/Test1-Text/Test2";
var pattern = "github[.]com/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)";
console.log(new RegExp(pattern).test(tst));




<强>更新

使用外部源的模式时,需要使用构造函数表示法。确保您的正则表达式模式存储为文字字符串(如果您有RegExp("C:\\\\Folder"),请确保它存储为C:\\Folder),并且当读取其中的值时,它将自动与{{1}一起使用构造函数。