在 javascript 中的正则表达式字符串中动态添加转义反斜杠到反斜杠



目的:
针对自定义字符串变成正则表达式的测试输入(初始正则表达式到成为字符串各不相同)。

问题:
转义斜杠动态添加到要成为正则表达式的字符串中的每个反斜杠。
这是以下代码中的???部分,但如果需要,可以采用不同的(相当简洁)的方式。

那么如何将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");

我想不通。我尝试使用joinreplacestringifyString.raw进行split,但它们似乎都不起作用(通常只是删除初始反斜杠/将数组作为单个项目返回)。

我还查看了各种反斜杠添加问题,但似乎没有任何效果。这甚至可能以简洁的方式吗?

试试这个。使用String.rawreplace方法

var initial = String.raw`^[w-]+(.[w-]+)*@([w-]+.)+([a-zA-Z]){2,}$`;
var pattern = initial.replace(/\/g,'\\');
console.log(pattern);

最新更新