2015-06-22 5 views
0

Я не могу понять, почему это очень просто регулярное выражение failling:Matching последний символ строки не удается

"3243" ==~ /^\d+$/ 

Я хочу Вэл только быть строка чисел. Возвращаемое значение:

"213213" ==~ /^\d+/ 
"213213dsadasd" ==~ /^\d+/ 

Это часть проверки поля в объекте домена. Это полный код:

static constraints = { 
     intValue validator: {val,obj -> 

     if(val){ 
      "${val}" ==~ /^[0-9]*$/ 
     }  
     } 
    } 

В приведенном выше примере будет принимать «321a31» или «321aa» ... Не уверен, что если регулярное выражение является неправильным или что-то еще от ...

intValue является Целое число, хотя проверка по умолчанию будет принимать строки, такие как «32112dsa» (и хранить только числовую часть), поэтому я пытаюсь создать настраиваемый валидатор.

+0

Пропущенный там ритм. Да опечатка. – Giannis

+0

Какая версия groovy? – doelleri

+0

jdk 7 и grails 2.3.11 – Giannis

ответ

0

Причина, по которой регулярное выражение не имеет никакого значения, заключается в том, что значения, достигающие поля объекта домена, уже были проанализированы автоматически. Обходной путь для этого можно найти по этому ответу: Grails GORM integer validation

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

  • Нет связанных вопросов^_^