^(?![\\s\\S]*(\\d{16})|[\\s\\S]*(\\d{9}))[\\s\\S]*
上面的正则表达式不允许字符串中的数字大于 10 位。例如,如果用户输入测试 1234567891。文本是有效文本。我们应该允许用户输入这个文本。用户不应只输入 9 位数字或 16 位数字。例如,测试 123456789 应该是无效的。如何修改正则表达式。
不要使用正则表达式进行这种检查。Java 有.length()
字符串:
private static final Pattern DIGITS = "\\d+";
public boolean inputOK(String input)
{
Matcher m = DIGITS.matcher(input);
int len;
while (m.find()) {
len = m.group().length();
if (len == 9 || len == 16)
return false;
}
return true;
}