正则表达式JavaScript。使用当前正则表达式解析日志文件

时间:2013-11-25 18:35:47

标签: javascript jquery regex

我在C#中使用过Regex。我如何在Javasript中使用这种类型的正则表达式。这种类型的正则表达式适用于C#。

我有以下正则表达式:

(?<Month>[A-Za-z]{3}) (?<Date>[0-9]{2}) (?<Hour>[0-9]{2}):(?<Minutes>[0-9]{2}):(?<Seconds>[0-9]{2}) (?<ComputerName>[A-Za-z0-9\-\ ]+): (?<KernalTime>[0-9\.\[\]\ ]+) (?<Message>[A-Za-z\(\)\.\ ]+)

解析以下行(所有行类似):

Nov 24 14:24:31 Dell-Inspiron-N5110 kernel: [    0.000000]   Intel GenuineIntel

在javascript中我使用了以下代码。

matchRegexParse: function () {



   var myString = "Nov 24 14:24:31 Dell-Inspiron-N5110 kernel: [    0.000000]   Intel GenuineIntel";
    var myRegexp = new RegExp(
        "(?<Month>[A-Za-z]{3}) (?<Date>[0-9]{2}) (?<Hour>[0-9]{2}):(?<Minutes>[0-9]{2}):(?<Seconds>[0-9]{2}) (?<ComputerName>[A-Za-z0-9\-\ ]+): (?<KernalTime>[0-9\.\[\]\ ]+) (?<Message>[A-Za-z0-9\(\)\.\ \-\:]+)",
        "gi");

    var match = myRegexp.exec(myString);
    alert(match);
},

我收到以下错误(请参阅附图):

enter image description here

编辑(错误为文本):

  

未捕获的SyntaxError:无效的正则表达式:/(?<Month>[A-Za-z]{3}) (?<Date>[0-9]{2}) (?<Hour>[0-9]{2}):(?<Minutes>[0-9]{2}):(?<Seconds>[0-9]{2}) (?<ComputerName>[A-Za-z0-9\-\ ]+): (?<KernalTime>[0-9.\[\]\ ]+) (?<Message>[A-Za-z0-9\(\)\.\ \-\:]+)/:无效的组

1 个答案:

答案 0 :(得分:2)

据我所知,JavaScript不支持命名组:

Named capturing groups in JavaScript regex?

您可以通过删除<Angle-Bracket-Parts>

转换为数字索引组
var re = /([A-Za-z]{3}) ([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2}) ([A-Za-z0-9\-\ ]+): ([0-9\.\[\]\ ]+) ([A-Za-z0-9\(\)\.\ \-\:]+)/gi

这意味着您只能通过数字偏移访问捕获的信息:

var match = re.exec(myString);
console.log( match[1] ) // Nov 24

或使用类似的东西:

http://xregexp.com/