我有一个角度应用程序,用户可以在表单中添加正则表达式,值如下:
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);
答案 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}一起使用构造函数。