2
^(?![\\s\\S]*(\\d{16})|[\\s\\S]*(\\d{9}))[\\s\\S]*

上面的正则表达式不允许字符串中的数字大于 10 位。例如,如果用户输入测试 1234567891。文本是有效文本。我们应该允许用户输入这个文本。用户不应只输入 9 位数字或 16 位数字。例如,测试 123456789 应该是无效的。如何修改正则表达式。

4

2 回答 2

6

正则表达式最能满足此要求吗?我认为检查字符串长度以及是否有数字会更具可读性

有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。

看看这里

于 2013-01-16T13:32:44.220 回答
1

不要使用正则表达式进行这种检查。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;
}
于 2013-01-16T13:47:12.407 回答