2013-09-13 7 views
0

Я пытаюсь проверить поле формы в Java с помощью Regex, который может иметь 5 различных форматов. Я изо всех сил пытаюсь заставить этого работать.Использование Regex для проверки строки переменной длины

Строка, подлежащая проверке, будет находиться между 4-6 буквенно-цифровыми символами.

Если это 4 символа, это должны быть все номера.

^\\d{4}$ 

Если это 5 символов, это может быть все номера, первая позиция письмо с 4-мя следующими номерами, или первые 3 позиции букв следуют с 2-х номеров.

^\\d{5}$ 
^[a-zA-Z]\\d{4}$ 
^[a-zA-Z]{3}\\d{2}$ 

И если это 6 символов, это будет первая позиция, 4 цифры и последняя другая буква.

^[a-zA-Z]\\d{4}[a-zA-Z]$ 

Я просто не могу изобразить все вместе.

ответ

2

Самый простой способ просто перечислить каждый приемлемый образец в группе, разделенных чередованием (|):

^(\\d{4}|\\d{5}|[a-zA-Z]\\d{4}|[a-zA-Z]{3}\\d{2}|[a-zA-Z]\\d{4}[a-zA-Z])$ 

Но вы можете улучшить этот немного комбинируя некоторые из альтернатив:

^([a-zA-Z\\d]?\\d{4}|[a-zA-Z]{3}\\d{2}|[a-zA-Z]\\d{4}[a-zA-Z])$ 
+0

Это работает ... спасибо! Я не понимал, что могу напрямую использовать оператор или в строке регулярного выражения ... Я помещал его в оператор if. –

Смежные вопросы