正则表达式,需要匹配四位数中的三个精确数字



我试图创建的正则表达式应该与任何4位数中包含3个'8的所有数字匹配。我的正则表达式只匹配15个数字列表中的前10个数字。如有任何建议,我们将不胜感激。

b[0-9]*(?:8[0-9]*[0-9]?8|8[0-9]*[0-9]?8|8[0-9]*[0-9]?8)b

测试数据:

8088 8188 8288 8388 8488 8808 8818 8828 8838 8848 8880 8881 8882 8883 8884

最后五个数字也应该匹配,但不要匹配。

您可以使用

b(?=d{4}b)(?:[0-79]*8){3}[0-79]*b

请参阅regex演示。

详细信息

  • b-一个词的边界
  • (?=d{4}b)-右边必须有4个数字,后面应该跟一个单词边界
  • (?:[0-79]*8){3}-除88之外的任何0或更多数字的三次出现
  • [0-79]*-除8之外的任何0位或更多数字
  • b—字边界

如果保证数字是四位数字,那么您可以尝试以下操作:

b8*[0-79]8*b

要分析每个部件匹配的内容,您可以使用进行检查

b(8*)[0-79](8*)b

应该这样做。这将匹配4种模式中的任何一种。

([d888]|[8d88]|[88d8]|[888d])

您可能需要添加一个分隔符检查(在您的示例中是空格(,因为此模式将在空格之间匹配,从而为您提供更多的结果

b(d?8{3}d?)b

  • 这使得单词绑定中的第一个和最后一个数字是可选的,使用?{0,1}
  • 在你的8加上量词,就可以精确地需要{3}的八位数
  • [0-9]替换为dDigit用于brewity
  • 假设你只有长度为4的数字。否则,使用不带可选数字的替代方案:b(d8{3}|8{3}d)b

最新更新