代码之家  ›  专栏  ›  技术社区  ›  mahan

regex精确查找4位数字

  •  2
  • mahan  · 技术社区  · 6 年前

    我有一个类似下面的文本。它包含一个 4 紧随其后的数字 digit- whitespace 然后是 . , ? , -digit 空白 .


    我需要匹配第一段中的所有数字,但第二段中没有,因为这些数字不符合我的条件。

    Lorem ipsum 3400-digit, sit amet 5000 consectetur adipisicing elit. Natus, explicabo 6700? Itaque iure ipsum laboriosam, ex nemo delectus iste quia cupiditate digit-9134? Iste nam digit-2456 at voluptate est 8456-digit? At excepturi quis voluptatibus 7500.

    Lorem ipsum $5000 dolor sit amet consectetur adipisicing elit. Obcaecati tempora dolorum repellat reiciendis cum soluta deserunt ex voluptatibus, nam illum veniam £5550 quidem aperiam sequi, nostrum sed? Quidem eveniet maiores #5550 autem. https://codepen.io/pen/5000/3454


    已经有几个类似的问题了 叠加溢出 . 我已经浏览了其中的一些(下面的链接),但我仍然无法做到这一点。请在将此问题标记为重复之前,检查您的解决方案是否在第一段中找到所有出现的4位数字,但在第二段中没有。

    2 回复  |  直到 6 年前
        1
  •  4
  •   Wiktor Stribiżew    6 年前

    /(?:\bdigit-|\s|^)(\d{4})(?=[.?\s]|-digit\b|$)/gi
    

    regex demo

    • (?:\bdigit-|\s|^) digit-
    • (\d{4})
    • (?=[.?\s]|-digit\b|$) . ? -digit

    var strs = ["Lorem ipsum 3400-digit, sit amet 5000 consectetur adipisicing elit. Natus, explicabo 6700? Itaque iure  ipsum laboriosam, ex  nemo delectus iste quia cupiditate digit-9134? Iste nam digit-2456 at voluptate est 8456-digit? At excepturi quis voluptatibus 7500.", "Lorem ipsum $5000  dolor sit amet consectetur adipisicing elit. Obcaecati tempora dolorum repellat reiciendis cum soluta deserunt ex voluptatibus, nam illum veniam £5550 quidem aperiam sequi, nostrum sed? Quidem eveniet maiores #5550 autem. https://codepen.io/pen/5000/3454" ];
    var rx = /(?:\bdigit-|\s|^)(\d{4})(?=[.?\s]|-digit\b|$)/gi;
    for (var s of strs) {
       var m, res =[];
       while(m=rx.exec(s)) {
         res.push(m[1]);
       }
       console.log(res);
    }
        2
  •  2
  •   James Whiteley    6 年前
    (\s|digit-)([0-9]{4})(?=-digit|\.|\?|\s)
    

    OR

    • (?!\s|digit-) digit-
    • [0-9]{4}
    • (?=-digit|\.|\?|\s) -digit .

    Play around on Regex101