肯定的なlookbehindを使用すると、別の制約をチェックすることもできます。例えば。
^(\d{4,5}-\d{3,4}-\d{1,2})(?<=^.{12})
チェックし、行の先頭から(?<=^.{12})
に文字列の一部が正確に12文字を持っている場合。
Javaの例:
Pattern p = Pattern.compile("^(\\d{4,5}-\\d{3,4}-\\d{1,2})(?<=^.{12})");
for (String s : new String[]{"12345-1234-12",
"1234-1234-12",
"12345-123-12",
"12345-1234-1",
"1234-123-1",
"1234-1234-1"
}) {
System.out.println(s);
System.out.println(p.matcher(s).matches());
}
出力
12345-1234-12
false
1234-1234-12
true
12345-123-12
true
12345-1234-1
true
1234-123-1
false
1234-1234-1
false
13文字の文字列も一致する必要がある場合、後読みは、(?<=^.{12,13})
に変更することができます。 (最初の入力にはtrue
が返されます)
「運がない」を定義します。何が起こった?あなたはどうやってそれを使いましたか? – Tunaki
それは私の必要条件でない1234-123-1 1234-1234-1を受け入れています – Krishna
他の文字列とのマッチングはなぜ間違っていますか?なぜ彼らは一致してはならないのか分かりません... – fabian