允许字符串中除9和16位以外的任何数字

时间:2013-01-16 13:31:16

标签: java regex

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

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

2 个答案:

答案 0 :(得分:6)

正则表达式最能满足此要求吗?我认为检查字符串长度是否 更具可读性,如果你有一个数字。

  

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

并查看here

答案 1 :(得分: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;
}