目的:
根据自定义字符串转为正则表达式测试输入(初始正则表达式字符串不同)。
问题:
将转义斜杠动态添加到字符串到正则表达式中的每个反斜杠。
这是下面代码中的 ??? 部分,但如果需要,可以采用不同的(相当简单的)方式。
所以如何转
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");
我无法弄明白。我使用split
,join
,replace
和stringify
尝试String.raw
,但它们似乎都没有效果(通常只删除初始反斜杠/将数组返回为单个项目。)
我还查看了各种反斜杠添加问题,但似乎没有任何效果。这甚至可能以一种娴熟的方式存在吗?
答案 0 :(得分:0)
试试这个。使用String.raw
和replace
方法
var initial = String.raw`^[\w-]+(\.[\w-]+)*@([\w-]+\.)+([a-zA-Z]){2,}$`;
var pattern = initial.replace(/\\/g,'\\\\');
console.log(pattern);