Regex 如何取消JavaScript字符串文字值的转换?
我正在使用解析代码(使用ES解析器,如Esprima,不受技术环境限制) 主题代码(正在解析的代码为): 其输出为:Regex 如何取消JavaScript字符串文字值的转换?,regex,javascript,Regex,Javascript,我正在使用解析代码(使用ES解析器,如Esprima,不受技术环境限制) 主题代码(正在解析的代码为): 其输出为: <div class=\'shows\'>\n<\/div> 简单地使用unescape没有效果 如果我没有弄错的话,问题是如何取消该值: console.log('"<div class=\\\'shows\\\'>\\\\n<\\\/div>"'); console.log(“\\\\n”); 最愚蠢的方式是 "<di
<div class=\'shows\'>\n<\/div>
简单地使用unescape
没有效果
如果我没有弄错的话,问题是如何取消该值:
console.log('"<div class=\\\'shows\\\'>\\\\n<\\\/div>"');
console.log(“\\\\n”);
最愚蠢的方式是
"<div class=\\'shows\\'>\\\\n<\\/div>".replace(/\\n/g, '').replace(/\\/g, '');
// "<div class='shows'></div>"
“\\\\n”。替换(/\\n/g.)。替换(/\\/g.);
// ""
更聪明的方法是先取消搜索\n而不是用正则表达式检查是否有未搜索的匹配项,然后再逃逸这些匹配项。您正在寻找eval
(是的,您听到的没错):
text=document.querySelector('script').textContent;
dqString=/“(\\.\[^”])*”/g
s=文本。匹配(dqString)[0]
原始=评估值;
警报(原始);
(功能(){
$('3bf779cd')。替换为(“\n”);
window.fadeItems();
});
看起来您需要使用类似于replace
的方法。这是一种有趣(且有效)的方法,但安全使用eval
是否仍有考虑因素(请参见:。此外,您的正则表达式足够松散,可以捕获任何“
带引号的字符串。如果需要,您可以使用/“[^”]+“/g
;但如果要将其限制为包含反斜杠的字符串,则应使用类似于“/”[^”]*\\+[^”]*“/g
<div class='shows'>
</div>
console.log('"<div class=\\\'shows\\\'>\\\\n<\\\/div>"');
"<div class=\\'shows\\'>\\\\n<\\/div>".replace(/\\n/g, '').replace(/\\/g, '');
// "<div class='shows'></div>"