我在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);
},
我收到以下错误(请参阅附图):
编辑(错误为文本):
未捕获的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\(\)\.\ \-\:]+)/
:无效的组
答案 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
或使用类似的东西: