Одним из способов будет использование группы совпадений, поэтому (a|b)
будет соответствовать либо на a
, либо на b
.
Таким образом, ваше выражение регулярного выражения будет выглядеть примерно так:
^((13|24|28).{6}|.{2}(55|99).{4}|.{4}(20|21).{2}|.{6}(42|38|09|17|66))$
Что вы могли бы использовать в java с классами Pattern
и Matcher
.
if (value.length() != 8) {
return false;
} else {
String patternString = "^((13|24|28).{6}|.{2}(55|99.).{4}|.{4}(20|21).{2}|.{6}(42|38|09|17|66))$";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(value);
boolean matches = matcher.matches();
return !matches;
}
Что касается длины строки, я не вижу хорошего способа проверить это в обычном выражение. Так что просто проверьте его с помощью оператора if-else.
Но убедитесь, что шаблон ie компилируется только один раз, если он вам нужен несколько раз.
Также для создания регулярного выражения я бы предложил используя веб-сайт, например regex101 или regexr .