2016-07-31 5 views
0

Я использую аннотацию @Pattern в поле String в моей Entity, с регулярным выражением, допускающим только числа или пустые строки, но мне нужно разрешить числа начиная с 0.@Pattern регулярное выражение, разрешающее только: numbers & empty Строка и числа, начинающиеся с 0

Это шаблон я использую сейчас:

//.. 
@Pattern(message="Entrez un nombre" , regexp = "[+-]?(([1-9][0-9]*)|(0))([.,][0-9]+)?|(^$)") 
private String BSCId; 
//... 

Спасибо.

+0

И это регулярное выражение не работает для вас? Какой у Вас вопрос? –

+1

Попробуйте 'regexp ="^(?: [+ -]? [0-9] + (?: [,.] [0-9] +)?)? $ "' –

+1

Или, если 0 или 0, 00 не допускаются, 'regexp ="^(?! 0 + (?: [.,] 0 +)? $) (?: [+ -]? [0-9] + (?: [,.] [ 0-9] +)?)? $ "' –

ответ

2

Попробуйте это:

^(?:[+-]?(\d+)([,.]\d+)?)?$ 

Это позволяет номера начать с 0, а также позволяет струна быть пустым, делая все строки необязательно.

  • [+-]?(\d+) матч по желанию + или -, а затем сопоставить 1 до бесконечности цифр
  • ([,.]\d+)? матча , или ., а затем от одного до бесконечности цифр. Сделать целую фракцию необязательной, так что целые числа также могут быть сопоставлены.
  • (?:...)? сделать все необязательным (так как пустая строка будет соответствовать требованиям), без создания группы захвата.
+0

Это не сработало, но Wiktor уже ответил на мой вопрос, спасибо в любом случае. – dwix

+0

@dwix Можете ли вы уточнить? Что не сработало? – nicael

+0

Теперь это копия моего предложения. Не могли бы вы объяснить, почему это должно сработать? –