目的:
针对自定义字符串变成正则表达式的测试输入(初始正则表达式到成为字符串各不相同)。
问题:将
转义斜杠动态添加到要成为正则表达式的字符串中的每个反斜杠。
这是以下代码中的???部分,但如果需要,可以采用不同的(相当简洁)的方式。
那么如何将var initial = "^[w-]+(.[w-]+)*@([w-]+.)+([a-zA-Z]){2,}$";
转换为var pattern = "^[\w-]+(\.[\w-]+)*@([\w-]+\.)+([a-zA-Z]){2,}$";)
(因此它也适用于不同的正则表达式字符串)
?
法典:
var initial = "^[w-]+(.[w-]+)*@([w-]+.)+([a-zA-Z]){2,}$";
??? (needs to result in 'pattern' variable with double slashes as above)
pattern = new RegExp(pattern);
var result = pattern.test("some@mail.com");
我想不通。我尝试使用join
、replace
、stringify
和String.raw
进行split
,但它们似乎都不起作用(通常只是删除初始反斜杠/将数组作为单个项目返回)。
我还查看了各种反斜杠添加问题,但似乎没有任何效果。这甚至可能以简洁的方式吗?
试试这个。使用String.raw
和replace
方法
var initial = String.raw`^[w-]+(.[w-]+)*@([w-]+.)+([a-zA-Z]){2,}$`;
var pattern = initial.replace(/\/g,'\\');
console.log(pattern);