javascript - 如何从 html 字符串中提取 JavaScript 变量?>
问题描述
我检索了一些基本上如下所示的 JavaScript。也就是说,我将它放在 const 中,如下所示。无需编写一堆难看的解析来寻找变量,有没有一种聪明的方法来获取
traffic_days
, traffic_day_persent
,traffic-mbytes
等的值?
const htmlData = `
<html>
<body bgcolor="#ffffff">
<form method="POST" action="/apply.cgi">
<div id="main" class="main">
<script>
var traffic_days = "13/31";
var traffic_day_persent = "41";
var traffic_mbytes = "57346.86/1000000 Mbytes ";
var traffic_mbytes_persent = "5";
var warning_value = "";
if (timereset == "") timereset = "5";
</script>
</div>
</form>
<script>
alert('testing');
</script>
</body>
</html>`;
解决方案
我不知道在不提供解析的东西/模式的情况下使用聪明的解决方案。
假设引号之间的任何变量值都是有效的,只需换掉变量名,“.+”位保持不变:
var trafficDays = htmlData.match('traffic_days = ".+"')[0];
var trafficMbytes = htmlData.match('traffic_mbytes = ".+"')[0];
等等
那些对我来说并不难看。抱歉,如果这不是您要找的东西(我还没有代表提问)。
我使用 Node 的 REPL 对此进行了测试:
$ node
> const htmlData = `
... <html>
... <body bgcolor="#ffffff">
... <form method="POST" action="/apply.cgi">
... <div id="main" class="main">
... <script>
... var traffic_days = "13/31";
... var traffic_day_persent = "41";
... var traffic_mbytes = "57346.86/1000000 Mbytes ";
... var traffic_mbytes_persent = "5";
... var warning_value = "";
... if (timereset == "") timereset = "5";
... </script>
... </div>
... </form>
... <script>
... alert('testing');
... </script>
... </body>
... </html>`;
undefined
> var trafficDays = htmlData.match('traffic_days = ".+"')[0];
undefined
> console.log(trafficDays);
traffic_days = "13/31"
推荐阅读
- javascript - 反应 - 如果我想添加一些自定义插件,管理 ckeditor 的正确方法是什么
- azure - Kusto 查询语言:获取匹配的关键字 (has_any)
- java - 无法使用 Selenium webdriver 在控制台上读取和打印隐藏在省略号后面的全文
- r - 如何计算/指示是否存在先前的组内交互?
- php - 我们可以使用 db builder laravel 创建一个表对象以进行插入查询吗?
- azure - 如果不使用耳机,Azure 语音服务的“回声消除”
- android - 我想通过wifi连接到android adb而不使用我们输入adb tcpip
- python - 可以恢复收据中字符的褪色部分吗?
- networking - 你们能帮我弄清楚我刚刚制作的 VLSM 吗?
- javascript - ID3 JS Unicode ReactJs