Regex как сопоставить необязательный символ

У меня есть регулярное выражение, которое, как я думал, до сих пор работало правильно. Мне нужно сопоставить необязательный символ. Это может быть, а может и нет.

Вот две строки. Верхняя строка соответствует, а нижняя - нет. Отсутствие единственной буквы в нижней строке - это то, что приводит к сбою.

Я хотел бы получить единственную букву после начальных 5 цифр, если она есть, а если нет, продолжить получение остальной части строки. Это письмо может быть AZ .

Если я удалю ([AZ] {1}) +. *? + из регулярного выражения, оно будет соответствовать всему, что мне нужно, кроме буквы, но это важно.

20000      K               Q511195DREWBT            E00078748521
30000                      K601220PLOPOH            Z00054878524

Вот регулярное выражение, которое я использую.

/^([0-9]{5})+.*? ([A-Z]{1}) +.*? +([A-Z]{1})([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3}) +([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})/
117
задан codaddict 24 October 2010 в 10:48
поделиться