【问题标题】:Regex to match a specific group of digits of certain length?正则表达式匹配特定长度的特定数字组?
【发布时间】:2012-03-27 23:08:04
【问题描述】:

我发现了这个:Regex to match digits of specific length,但它谈论的是 Python。我希望能够获得一组特定长度的随机数。所以如果我有167691#15316243,它将匹配15316243。我不确定如何实现这一点。现在我有new RegExp('[0-9]+', "g");,它可以很好地匹配一组数字,但现在我意识到我会有一些时候我有多个组并且我只想要八个数字的组。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您可以使用 {} 指定匹配集的长度。

    例如:[0-9]{8}

    这将匹配从 0 到 9 的任何数字,特定长度为 8 个字符。

    您还可以指定最小/最大范围,而不是强制指定特定长度。因此,如果您希望最小值为 4,最大值为 8,则示例将更改为:[0-9]{4,8}

    【讨论】:

    • 你几乎肯定想要界限。
    【解决方案2】:
    [0-9]+ - Matches one or more numbers
    [0-9]{8} - Matches exactly 8 numbers.
    [0-9]{8,10} - Matches between 8 and 10 numbers.
    [0-9]{8,} - Matches 8 or more numbers.
    [0-9]* - Matches zero or more numbers.
    [0-9]? - Matches zero or one number.
    

    【讨论】:

    • [0-9]{8,} - 最小长度为 8
    • @ThoQLuong 添加,谢谢!由于声誉要求,无法接受审核。
    • 重要提示:{8,10} 中的逗号后不要添加空格。它应该是 {8,10} 而不是 {8, 10}
    【解决方案3】:

    只需将重复量放在花括号中:

    "167691#15316243".match(/\d{8}/g);
    

    这是小提琴:http://jsfiddle.net/3r5vd/


    我建议你阅读this article(向下滚动到限制重复部分)。

    这是一个引用:

    现代正则表达式风格 [...] 有一个额外的重复运算符,允许您指定一个标记可以重复多少次。语法为{min,max},其中min是一个正整数,表示最小匹配数,max是一个等于或大于min的整数,表示最大匹配数。如果存在逗号但省略了max,则最大匹配数是无限的。所以{0,}* 相同,{1,}+ 相同。
    省略逗号和最大值会告诉引擎准确地重复令牌min 次。

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2013-11-04
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多