【发布时间】:2015-12-30 07:05:06
【问题描述】:
我有一些 JavaScript 代码,我需要从中找到每个正则表达式的开始和结束索引。
如何从 UglifyJS 中提取这些信息?
var uglify = require('uglify-js');
var code = "func(1/2, /hello/);";
var parsed = uglify.parse(code);
我进入变量parsed 的结构非常复杂。我所需要的只是每个文字正则表达式的[{startIdx, endIdx}, {startIdx, endIdx}] 数组。
附:如果有人认为同样的任务可以用比 UglifyJS 更好的方式完成,欢迎提出建议!
更新
我知道如果我深入挖掘解析后的结构,那么对于每个正则表达式我都能找到对象:
AST_Token {
raw: '/hello/',
file: null,
comments_before: [],
nlb: false,
endpos: 17,
endcol: 17,
endline: 1,
pos: 10,
col: 10,
line: 1,
value: /hello/,
type: 'regexp'
}
我需要弄清楚如何从解析的结构中提取所有此类对象,以便编译位置索引列表。
【问题讨论】:
-
在提取这些正则表达式或字符串或它们的索引后,您是否会告诉我们您将如何处理它们?
-
@torazaburo 它是另一个已经完成的解析器的一部分,除了正确支持正则表达式。我已经设法隔离了大约 99% 的案例,但如果没有完整的表达式评估,最后 1% 似乎是不可能的。我只需要知道正则表达式在任何给定代码行中的位置。
标签: javascript uglifyjs