【问题标题】:regex to find consecutive digits in javascript [duplicate]正则表达式在javascript中查找连续数字[重复]
【发布时间】:2014-09-14 06:51:51
【问题描述】:

我正在尝试通过 javascript 中的正则表达式查找多个连续数字

假设我有:

12345abc123

我想知道我有多少次连续获得 3 个或更多数字。现在我正在使用:

/\d{3}/g

但这给了我:123、123,我想要:123、234、345、123

如何更改我的正则表达式以获得我想要的?

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    你可以使用这个正则表达式:

    /(?=(\d{3}))/g
    

    Online Regex Demo

    代码:

    var re = /(?=(\d{3}))/g; 
    var str = '12345abc789';
    var m;
    while ((m = re.exec(str)) != null) {
        console.log(m[1]);
    }
    

    输出:

    123
    234
    345
    789
    

    【讨论】:

    • 太棒了!非常感谢,我正在尝试分组但没有击中好一个
    • @anubhava 为什么最后加了.
    • 应该删除正则表达式末尾的.
    • 它可以在没有它的情况下工作,因为分组在前瞻内。 (更新了正则表达式)
    【解决方案2】:

    您必须使用前瞻断言:

    var str = '12345abc123', 
    re = /\d(?=(\d\d))/g;
    
    while ((match = re.exec(str)) !== null) {
        // each match is an array comprising
        // - the first digit and
        // - the next two digits
        console.log(match.join(''));
    }
    

    如果后面有两个数字,则匹配一个数字;断言导致引擎在第一个匹配数字之后立即开始下一次搜索。

    【讨论】:

      【解决方案3】:

      这是您要查找的正则表达式:

      /(?=(\d{3}))/g
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-19
        • 1970-01-01
        • 2016-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多