String の長さをチェックするための正規表現を作成しました。すべての文字は数字で、数字で始まります。例: 123 以下は私の式です
REGEX =^123\\d+{9}$";
しかし、文字列の長さを確認できませんでした。これらの文字列のみを検証し、長さは 9 で、123 から始まります。しかし、文字列 1234567891 を渡すと、それも検証されます。しかし、私の側で間違っていることはどうすればよいですか。
ここですでに回答されているように、最も簡単な方法は次のものを削除すること+
です:
^123\\d{9}$
また
^123\\d{6}$
正確に必要なものに応じて。
もう少し複雑で一般的なアプローチである否定先読みを使用することもできます。
(?!.{10,})^123\\d+$
説明:
これ(?!.{10,})
は、否定的な先読みです(?=
肯定的な先読みになります)。先読みの後の式がこのパターンに一致する場合、文字列全体が一致しないことを意味します。大まかに言うと、この正規表現の基準は、否定先読みのパターンが一致しない場合にのみ満たされます。
この場合、文字列は 10 文字以上を意味する一致しない場合にのみ一致するため、前のパターンが 9 文字まで一致する場合にのみ一致します。.{10}
肯定的な先読みは反対のことを行い、先読みの基準も一致する場合にのみ一致します。
好奇心のためにこれをここに置くだけで、これに必要なものよりも複雑です。
これを使ってみてください:
^123\\d{6}$
6
1、2、および 3 はおそらくまだ数字としてカウントされるはずなので、に変更しました。
また、削除しました+
。これを使用すると、1 つ以上\d
の s に一致します (したがって、桁数は無限になります)。
Doorknobs の回答の下のコメントに基づいて、これを行うことができます。
int length = 9;
String prefix = "123"; // or whatever
String regex = "^" + prefix + "\\d{ " + (length - prefix.length()) + "}$";
if (input.matches(regex)) {
// good
} else {
// bad
}