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

标签 javascript jquery html regex

我的任务是使用 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/

相关文章:

javascript - 非矩形对象的单击区域

c# - Razor View 中 int 的 mvc 下拉绑定(bind)

JavaScript - 使用 AWS SES 发送电子邮件

javascript - jQuery 验证一次调用中远程解析两个字段?

javascript - 动态添加带有jquery错误的元素

jquery - Server Sent Events EventSource 不会在 firefox 中连续调用

javascript - 我将数据表用于 JSP 文件中填充的列表,而在 jsp 文件中列表显示不正确

javascript - 如何在click handler中获取event.target元素对应的react组件实例?

javascript - jQuery 在底部滚动位置时加载更多数据

javascript - readFileSync 不是函数