我需要从HTML中的javascript代码获取分配变量的名称和值。
例如,有html代码:
<html>
<head>~~</head>
<body>
<div>contents</div>
<script>
var value1 = 55;var value2= 27;
var value3 = 'T';var value4 = "FIT#$%SIZE";
var value5 = '{\"P00000WJ000E\":{\"stock_price\":\"0.00\",\"use_stock\":true,\"use_soldout\":\"T\",\"is_display\":\"T\",\"is_selling\":\"T\",\"option_price\":79000,\"option_name\":\"FIT#$%SIZE\",\"option_value\":\"NOBLE-44\",\"stock_number\":26,\"option_value_orginal\":[\"NOBLE\",\"44\"],\"use_stock_original\":\"T\",\"use_soldout_original\":\"T\",\"use_soldout_today_delivery\":\"F\",\"is_auto_soldout\":\"F\",\"is_mandatory\":\"T\",\"option_id\":\"000E\",\"is_reserve_stat\":\"N\",\"item_image_file\":null,\"origin_option_added_price\":\"0.00\"}}';
var value6 = '1';
var value7 = 'string;must-catch';
var value8 = 8;
var value9 = 'S';
var value10 = 'T';
</script>
</body>
</html>
预期的事情是:
result = {
value1: 55,
value2: 27,
value3: 'T',
value4: "FIT#$%SIZE",
...
}
在我的环境中,没有Regex不能使用其他解析器工具。 因此,尝试几乎涵盖以下内容:
var\s(\w+)\s?\=\s?(\d+|\"[^;]*\"|\'[^;]*\')\s?\;
结果已经出现,但我还需要捕获包含分号的字符串。 有什么想法吗?
答案 0 :(得分:1)
代替使用$name = "zzz"
$name -cmatch "^[0-9a-z]*$"
不匹配分号,您可以匹配[^;]*
而不是换行符,并为其添加单引号或双引号[^\n']
[^\n"]
如果您想匹配换行符,则可以像var\s(\w+)\s?\=\s?(\d+|\"[^\n"]*\"|\'[^\n']*\')\s?\;
^^^ ^^^
和[^"]*
一样从negated character class省略换行符。