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

允许空格的17位正则表达式

  •  0
  • Bunnies_Nothing  · 技术社区  · 6 年前

    允许17位数字在任意数量的字符之间有空格或无空格的正则表达式是什么? 我正在Android上使用OCR实时捕获SDK(ABBYY RTR SDK)(,我正在使用自定义数据捕获(必须捕获17位数字,中间有无空格)

    我的正则表达式当前为:

    field.setRegEx( "[0-9]{14,16}" );
    

    这只能捕获行内数字( 38492039483726473 )

    但我需要它来捕获这种格式的数字,以及这种格式- 3849 20394 8372 6473 。 我该如何实现这一目标?

    3 回复  |  直到 6 年前
        1
  •  2
  •   KyleFairns    6 年前

    如果只是这两种格式:

    (\d{17}|\d{4}\s\d{5}\s(?:\d{4}\s){2})
    

    捕获数字17次

    捕获4个数字后跟一个空格,然后捕获5个数字后跟另一个空格,然后捕获4个数字后跟一个空格两次

        2
  •  2
  •   mrzasa    6 年前

    尝试使用可选空格重复数字:

    (\d ?){17}
    

    Demo

        3
  •  2
  •   Tim Biegeleisen    6 年前

    对于@mrzasa给出的答案,另一种方法是首先删除数字字符串中的所有空格,然后使用更简单的正则表达式检查17位数字:

    String input = "3849 20394 8372 6473";
    if (input.replaceAll("\\s+", "").matches("\\d{17}")) {
        System.out.println("match");
    }