4

String の長さをチェックするための正規表現を作成しました。すべての文字は数字で、数字で始まります。例: 123 以下は私の式です

REGEX =^123\\d+{9}$";

しかし、文字列の長さを確認できませんでした。これらの文字列のみを検証し、長さは 9 で、123 から始まります。しかし、文字列 1234567891 を渡すと、それも検証されます。しかし、私の側で間違っていることはどうすればよいですか。

4

3 に答える 3

6

ここですでに回答されているように、最も簡単な方法は次のものを削除すること+です:

^123\\d{9}$

また

^123\\d{6}$

正確に必要なものに応じて。

もう少し複雑で一般的なアプローチである否定先読みを使用することもできます。

(?!.{10,})^123\\d+$

説明:

これ(?!.{10,})は、否定的な先読みです(?=肯定的な先読みになります)。先読みの後の式がこのパターンに一致する場合、文字列全体が一致しないことを意味します。大まかに言うと、この正規表現の基準は、否定先読みのパターンが一致しない場合にのみ満たされます

この場合、文字列は 10 文字以上を意味する一致しない場合にのみ一致するため、前のパターンが 9 文字まで一致する場合にのみ一致します.{10}

肯定的な先読みは反対のことを行い、先読みの基準一致する場合にのみ一致します。

好奇心のためにこれをここに置くだけで、これに必要なものよりも複雑です。

于 2013-02-19T13:05:42.090 に答える
5

これを使ってみてください:

^123\\d{6}$

61、2、および 3 はおそらくまだ数字としてカウントされるはずなので、に変更しました。

また、削除しました+。これを使用すると、1 つ以上\dの s に一致します (したがって、桁数は無限になります)。

于 2013-02-19T12:58:59.643 に答える
0

Doorknobs の回答の下のコメントに基づいて、これを行うことができます。

int length = 9;
String prefix = "123"; // or whatever
String regex = "^" + prefix + "\\d{ " + (length - prefix.length()) + "}$";
if (input.matches(regex)) {
    // good
} else {
    // bad
}
于 2013-02-19T13:12:24.313 に答える