2012-10-05 24 views
0

嗨,我想在命令對象約束中使用正則表達式來驗證mm/dd/yyyy模式的日期。使用正則表達式的grails驗證

正則表達式:

^(((0?[1-9]|1[012])/(0?[1-9]|1\d|2[0-8])|(0?[13456789]|1[012])/(29|30)|(0?[13578]|1[02])/31)/(19|[2-9]\d)\d{2}|0?2/29/((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$ 

Grails的約束

static constraints = { 
     date(blank:false) 
     date(matches:"^(((0?[1-9]|1[012])/(0?[1-9]|1\d|2[0-8])|(0?[13456789]|1[012])/(29|30)|(0?[13578]|1[02])/31)/(19|[2-9]\d)\d{2}|0?2/29/((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$") 
} 

我收到以下錯誤

unexpected char: '\' @ line 61, column 47. 
^(((0?[1-9]|1[012])/(0?[1-9]|1\d|2[0-8]) 

它不接受\

回答

1

你需要逃脫「\ 「和「$」標誌:

"^(((0?[1-9]|1[012])/(0?[1-9]|1\\d|2[0-8])|(0?[13456789]|1[012])/(29|30)|(0?[13578]|1[02])/31)/(19|[2-9]\\d)\\d{2}|0?2/29/((19|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))\$" 
+0

感謝謝爾蓋Shushkevich現在運轉:) – user1511828

+0

或許應該接受他的答案,如果它是爲你工作:) – 16dots