Javascript 在不使用eval()的情况下计算字符串

Javascript 在不使用eval()的情况下计算字符串,javascript,eval,Javascript,Eval,我正在创建一个“通用”网络刮板,它将刮板任何包含条目列表的页面。我想从配置驱动它应该提取的标记 以下配置的示例: { name : "price", valueJQueryExpression : ".mt9 > .mt7.b" }, 。。。我正在以以下方式进行解析: const $ = require('cheerio'); let jquery = getQuery("price"); let keys =

我正在创建一个“通用”网络刮板,它将刮板任何包含条目列表的页面。我想从配置驱动它应该提取的标记

以下配置的示例:

{ 
    name : "price",
    valueJQueryExpression : ".mt9 > .mt7.b"
},
。。。我正在以以下方式进行解析:

const $ = require('cheerio');
let jquery = getQuery("price");
let keys = $(jquery);
但是,我需要处理更复杂的解析器,例如:

let location = $('.mt9 > .b', html).not('.mt5').not('.mt7').text().trim()
在这种情况下,我考虑使用
eval()
并在配置中传递完整表达式。但是,由于安全问题,不建议这样做


您有什么不同处理方法的建议吗?

您应该可以在此处使用。请尝试以下操作:

$('.mt9 > .b:not(.mt5):not(.mt7)', html).text().trim()
它类似于jQuery,其中在
:not()
中指定的选择器将用于从匹配中排除元素

您可以在下面看到它的作用:

.mt9>.b:不(.mt5):不(.mt7){
颜色:红色;
}

这应该是红色的
这不应该是红色的
这不应该是红色的
var命令='console.log(“Hello”);
var s=document.createElement(“脚本”);
s、 text内容=命令;

文件。标题。附录子项尝试使用xpath而不是css选择器,您不必链接jQuery函数。