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

上記の正規表現では、文字列に 10 桁を超える数字を使用できません。たとえば、ユーザーがテスト 1234567891 を入力した場合。テキストは有効なテキストです。ユーザーがこのテキストを入力できるようにする必要があります。ユーザーは、9 桁の数字または 16 桁の数字のみを入力しないでください。たとえば、テスト 123456789 は無効である必要があります。正規表現を変更する方法。

4

2 に答える 2

6

この要件は regexp によって最もよく満たされますか? 文字列の長さを確認する方がはるかに読みやすいと思います。数値があれば。

問題に直面したときに、「分かった、正規表現を使用する」と考える人もいます。現在、彼らには 2 つの問題があります。

ここを参照してください。

于 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 に答える