在javascript

时间:2018-05-07 10:13:39

标签: 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");

我无法弄明白。我使用splitjoinreplacestringify尝试String.raw,但它们似乎都没有效果(通常只删除初始反斜杠/将数组返回为单个项目。)

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

1 个答案:

答案 0 :(得分:0)

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



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