javascript - 正则表达式准确找到 4 位数字

标签 javascript regex

我有一个类似于下面的文本。它包含一个 4 数字,后跟 digit-whitespace ,后跟 .?-digitwhitespace

我需要匹配第一段中的所有数字,但第二段中没有,因为这些数字不符合我的条件。
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
StackOverflow 上已经有一些类似的问题。我已经浏览了其中的一些(下面的链接),但我仍然无法做到这一点。请在将此问题标记为重复之前,检查您的解决方案是否在第一段中找到所有出现的 4 位数字,但在第二段中没有找到。

  • regular expression to match exactly 5 digits
  • Regular expression to match integers up to 9 digits
  • RegEx match exactly 4 digits
  • JavaScript: \\d{4} RegExp allows more than 4 digits
  • 最佳答案

    您可以使用以下模式:

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

    regex demo 。您需要获取所有第 1 组值。

    详情
  • (?:\bdigit-|\s|^) - digit-(作为一个整体)、空格或字符串开头
  • (\d{4}) - 第 1 组:四位数
  • (?=[.?\s]|-digit\b|$) - 紧靠右侧,必须有 . 、空格、?-digit(作为一个整体)或字符串结尾。 注意 如果没有前瞻,连续的以空格分隔的匹配将被忽略。

  • JS 演示:

    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);
    }

    关于javascript - 正则表达式准确找到 4 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51262823/

    相关文章:

    javascript - 使用 jQuery NestedSortable 插件列出嵌套列表的数量

    javascript - Nodejs回调函数的问题

    javascript - 正则表达式。如何匹配 '+' 和 ':' 之间的值?

    regex - 用于重复字符组的 Oracle 数据库正则表达式

    regex - 如何从超链接获取自定义属性的值?

    javascript - 如何在 JavaScript 中将字符串格式的 UTC 日期无偏移地转换为本地时间?

    javascript - 如何用 PHP 用 %0D%0A 替换新行

    iphone - 使用 REGEX 解析 html NSString

    java - 当 OR 正则表达式组的两半匹配时,是否定义了将选择哪一个?

    javascript - Express.js 中的数组 foreach 错误