【问题标题】:Confused about JavaScript Regex Multiline mode对 JavaScript 正则表达式多行模式感到困惑
【发布时间】:2014-09-07 23:08:58
【问题描述】:

对 Javascript 还是很陌生,我正在努力使用多行正则表达式。

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

现在在多行模式下,如何设置边界?我看过几个例子,但我只是在逃避。

如果我的提要看起来像这样

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 的项目列表。我只是在考虑这个bassackwards 认为我应该使用多行正则表达式吗?

【问题讨论】:

    标签: javascript regex multiline


    【解决方案1】:

    您可以通过m 修饰符在javascript 中使用多行模式。全局 g 修饰符意味着它将返回一个包含所有匹配项的数组:
    JSFiddle

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

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

    /(?:^|\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]
        });
    }
    

    【讨论】:

    • 好吧,你不妨一路走下去,只删除前 3 个解决方案。
    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多