gpt4 book ai didi

javascript - javascript中使用正则表达式获取日志信息

转载 作者:行者123 更新时间:2023-12-03 04:53:09 26 4
gpt4 key购买 nike

我的任务是使用 JavaScript 中的正则表达式在日志文件中查找一些信息。我找不到我的代码的问题。我不断收到错误: 未捕获的类型错误:无法读取 null 的属性“1”

日志文件示例:

202.32.92.47 - - [01/Jun/1995:00:00:59 -0600] "GET /~scottp/publish.html" 200 271
ix-or7-27.ix.netcom.com - - [01/Jun/1995:00:02:51 -0600] "GET /~ladd/ostriches.html" 200 205908
ram0.huji.ac.il - - [01/Jun/1995:00:05:44 -0600] "GET /~scottp/publish.html" 200 271

通过以下代码,我尝试获取主机名称:

var hostName = /(.*)\s\-\s\-/g;
$(".file").change(function(){
var file = "log";

$.get(file,function(data){
var lines = data.split("\n");
var len = lines.length;
//var arrayOfDomains = [];
//var match = [];

for(i=0;i<3;i++){
$("#123").append("<p>"+hostName.exec(lines[i])[1]+"</p><br>");
}
});
});

HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>

<input type="file" name="file" class="file">
<script type="text/javascript" src="func.js"></script>

<div id="123"></div>

</body>
</html>

我认为我的正则表达式没有任何问题,因为我单独使用了一些行,并且效果很好。仅当使用循环遍历行数组中的行时,代码才会停止工作。

最佳答案

它正在突破这条线 $("#123").append("<p>"+hostName.exec(lines[i])[1]+"</p><br>");因为 .exec() 有时返回 null由于您的正则表达式是全局的。

我发现这个问题应该可以帮助你解决你的问题。 RegExp.exec() returns NULL sporadically

根据这个问题,我建议它就像在循环内移动hooseName正则表达式分配一样简单,如下所示:

$(".file").change(function(){
var file = "log";

$.get(file,function(data){
var hostName = /(.*)\s\-\s\-/g; //Placed here
var lines = data.split("\n");
var len = lines.length;
//var arrayOfDomains = [];
//var match = [];
for(i=0;i<3;i++){
$("#123").append("<p>"+hostName.exec(lines[i])[1]+"</p><br>");
}
});
});

关于javascript - javascript中使用正则表达式获取日志信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42563296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com