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

Regex for 17 digits allowing spaces

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

我的正则表达式目前是这样的:

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

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

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

尝试使用可选的 space 重复一个数字:

(\d ?){17}

Demo

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

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

如果只是这两种格式:

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

捕获一个数字 17 次

捕获 4 位数字后跟 space,然后捕获 5 位数字后跟另一个 space,然后捕获 4 位数字后跟 space 两次