о вашем шаблоне:
В этих частях [0(1-9)|1(0-2)]
и [0(1-9)|1(0-9)|z(0-9)|3(0-1)](
Я думаю, что вы собираетесь использовать |
в качестве ИЛИ, но это не работает в классе символов .
Первая часть, например, равна [)(0-9]
из-за 0 и диапазонов 1-9 и 0-2. Поэтому вторая часть также не будет подходить для соответствия дате как формат.
Чтобы сопоставить количество цифр без более конкретной даты, такой как шаблон, вы можете использовать:
[A-Z\d]{4}\d{4}\d{12}\d{8}R\d{2}\d{4}
В Java
String regex = "[A-Z\\d]{4}\\d{4}\\d{12}\\d{8}R\\d{2}\\d{4}";
Вы также можете использовать [0-9]
вместо \\d
Regex demo
Примечание
Чтобы сопоставить шаблон типа даты с YYYYMMDD для сужения возможных принятых цифр, вы можете использовать следующее регулярное выражение, но это не будет проверять саму дату.
^\d{4}(?:1[012]|0[1-9])(?:3[01]|[12][0-9]|0[1-9])$
Regex demo