首页 > 解决方案 > Nodejs在字符串中添加额外的反斜杠(\)

问题描述

我正在尝试这个示例代码

let route = {
                paths: []
            }
            
let convertedStr0 = "/{test}/search/v1/{userId}"

let convertedStr1 = convertedStr0.replace(new RegExp("{", 'g'), "(?<").replace(new RegExp("}", 'g'), ">\\S+)$");

console.log(convertedStr1);  //Output: /(?<test>\S+)$/search/v1/(?<userId>\S+)$

route.paths[0] = convertedStr1;
console.log(route); //Output: { paths: [ '/(?<test>\\S+)$/search/v1/(?<userId>\\S+)$' ] }

我需要将路由结果写入带有单个反斜杠 ( \) 的文件中。但是附加了一个额外的反斜杠。有人对我如何解决此问题有任何建议吗?

标签: node.jsregexescapingregexp-replace

解决方案


反斜杠也是一个转义字符。在您的字面上的字符串中">\\S+)$",第一个转义第二个。这意味着"\\"定义单个字面字符\.

在第一个 console.log 中,您的输出是一个字符序列。在字符方面,您的字符串中只定义了一个反斜杠。

在第二个 console.log 中,您的输出是您的序列的字符串表示形式。所以有双反斜杠,代表一个转义另一个。

另请注意,第一个输出没有像第二种情况那样用单引号括起来。


推荐阅读