Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何取消JavaScript字符串文字值的转换?_Regex_Javascript - Fatal编程技术网

Regex 如何取消JavaScript字符串文字值的转换?

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

我正在使用解析代码(使用ES解析器,如Esprima,不受技术环境限制)

主题代码(正在解析的代码为):

其输出为:

<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>"