2016-10-27 4 views
0

У меня есть проблема с шаблоном для проверки Java-бобов. У меня есть образец для моих переменного внутри класса JavaПроверка Java bean заглавные буквы с диапазоном

@Pattern(regexp = ".*[A-Z]+[[A-Z]\\p{Space}]+[A-Z\\p{Punct}]+([0-9]{1,10})?", message = "Error")* 
private String name; 

А на самом деле он работает, но теперь я должен добавить диапазон {0,32}, чтобы заглавные слова. Когда я добавил [AZ] {0,32} это ломает

имя должны соответствовать значения ниже

  1. ПРОФИЛЬ - истинная
  2. P - истинный
  3. PRO - правда
  4. PROFILEPROFILEPROFILEPROFILEPROF - true
  5. PROFILEPROFILEPROFILEPROFILEPROFI - false
  6. ProfileName - ложные
  7. Профиль1 - истинный
  8. PROFILE100 - истинный
  9. PROFILE1000 - истинный
  10. PROFILE1000000 - истинный
  11. 1111 - ложные
  12. PROFILEPROFILE123456789PROFILE123 - ложные
  13. profile_name - ложь
  14. * ^^ @ - false
  15. ИСПАНИЯ PROFILE - true
  16. PROFILE_NAME - true
  17. ПРОФИЛЬ. - истинная
  18. &) 12р - ложные
  19. 11PROFILE - истинный
  20. 1234PROFILE - истинный
  21. $% # PROFILE - правда
  22. ничего - ложь

Как изменить/рефакторинг, что шаблон, чтобы добавить диапазон для заглавной буквы и 2, 5, 12 будет работать?

Решение "(? =. * [AZ]) [\ р {Punct} А-Z0-9] {1,32}"

+0

Что такое полный шаблон? –

+0

На самом деле это полный шаблон, и он работает, но когда я хочу добавить диапазон для прописной буквы [A-Z] {0,32}, он ломается Как изменить/реорганизовать этот шаблон, чтобы добавить диапазон для прописной буквы? –

+0

Что вы подразумеваете под * добавлением диапазона *? –

ответ

1

Вы можете использовать

@Pattern(regexp = "(?=.*[A-Z])[\\p{Punct}A-Z0-9 ]{1,32}", message = "Error") 

Смотрите regex demo

Поскольку шаблон закреплен по умолчанию (она используется с .matches() методом), не ^ и $ не нужны вокруг рисунка.

Это соответствует:

  • (?=.*[A-Z]) - после любых 0+, кроме LineBreak символов символов должны быть не менее 1 прописная ASCII буква
  • [\\p{Punct}A-Z0-9 ]{1,32} - матч 1 до 32 прописной ASCII буква, цифры, пробел или символов из класса символов PctX Pct (он содержит знаки препинания и символы).
Смежные вопросы