对JavaScript Regex Multiline模式感到困惑

时间:2014-09-07 23:08:59

标签: javascript regex multiline

Javascript仍然很新,我正在努力使用多行正则表达式。

通常,正则表达式的边界对于行的开头是^,对于当前行的结尾是$。因此,我的正则表达式受到约束,只能在^$之间运行。

现在处于多线模式,如何设置边界?我看过几个例子,它只是在逃避我。

如果我的Feed看起来像这样

Joe's item list 
Item one is Abc
Item two is xyz 
Item three is 123
End of Item List 

我的典型正则表达式看起来像^Item (\w+) is (\w+)$

但是我希望我的正则表达式只在开始和结束行之间触发,并且想要抓住这是Joe的项目列表。我只是在考虑这个贝克维奇认为我应该使用多线正则表达式吗?

1 个答案:

答案 0 :(得分:0)

您可以在javascript中使用多行模式和m修饰符。全局g修饰符表示它将返回包含所有匹配项的数组:
JSFiddle

/^Item (\w+) is (\w+)$/gm

我不确定你是如何使用你的正则表达式或者你认为使用多行正则表达式可能有问题的意思...但这可以模仿没有多线模式,如下所示:
JSFiddle

/(?:^|\n)Item (\w+) is (\w+)(?=\n|$)/g

如果您想要取出捕获组,您可以执行以下操作:
JSFiddle

var matches = []
var regex = /^Item (\w+) is (\w+)$/gm;
var match = null;
while (match = regex.exec(str)) {
    matches.push({
        itemNumber: match[1],
        itemName: match[2]
    });
}