我正在使用FileReader加载JS文件的内容并将结果转储到textarea容器中。然后我想对实际的JS文件运行一些检查。
我知道可能已经有了这方面的工具(或更好的方法),但这适用于封闭环境项目。
在textarea将JS文件的内容作为一个大字符串包含之后,我需要循环该字符串并找到parseInt()
的所有实例,以检查它们是否已经提供了基数。
我会提供代码,但此时我没有任何工作。有什么想法吗?
答案 0 :(得分:0)
以下代码段将搜索<textarea>
parseInt()
元素的字符串值,并输出出现的基数(如果适用):
var textareaValue = 'var func = function(){' +
'var i = parseInt(1,1);' +
'var j = parseInt(10, 10);' +
'var k = parseInt(3) + j;' +
'};';
occurences = textareaValue.match(/parseInt\(.+?(, ?\d+)?\)/g);
occurences.forEach(function(occurence){
var hasRadix = /, ?\d+\)$/.test(occurence);
document.body.innerHTML += '<p>"' + occurence + '" has ' +
(hasRadix ? 'a' : 'no') + ' radix' +
(hasRadix ? ' (' + occurence.match(/, ?(\d+)\)$/)[1] + ')' : '') +
'.</p>';
});
请注意,这不是实际的语法解释,它只是文本分析。您必须从结果中获取,其中包含
parseInt()
的所有出现的字符串。此外,JavaScript允许在文本段落中使用空格,注释,表达式和其他巫术。您可能必须检查任何内容。
实际的正则表达式/parseInt\(.+?(, ?\d+)?\)/g
将要求......
parseInt(
:punct:
扩展为包括括号等)作为可选组,确定是否提供基数:
*
响应任意数量的空格){1,2}
,因为只有2到36位有效)答案 1 :(得分:0)
以下函数应该能够通过简单的正则表达式匹配来区分parseInt
与基数的使用与没有基数的用法之间的区别:
function have_radix(str){
parseIntRegex = /parseInt\(.+?\)/g;
parseIntRegexWithRadix = /parseInt\(.+?(,.+?\))/g;
indices = [];
while ( (result = parseIntRegex.exec(str)) ) {
indices.push(result.index);
}
count = indices.length;
indices = [];
while ( (result = parseIntRegexWithRadix.exec(str)) ) {
indices.push(result.index);
}
diff = count - indices.length;
return diff;
}