2012-04-24 103 views
0

已在Google上搜索我的解決方案,並最終決定在此處發佈問題。使用REGEX進行字符串驗證

我的要求是隻發送一個C和R字符作爲輸入,並且傳遞的字符串的最大長度不應超過6個字符。

以下是有效的狀態:

A,C,R,

A,R,C,

R,A,C,

R,C,A,

C,R,A,

C,A,R,

R,C,

C,R,

A,R,

R,C,

A,

......

等等。 A,C,R所有可能的組合都是可能的,但最大長度不應增加6個字符。

到目前爲止,我能夠執行模式驗證,如([ACR],)+,但也想在同一個正則表達式中執行大小驗證。

所以現在,我使用的條件一樣

if(!status.matches("([ACR],)+") || status.length()>6){ 
SOP 
} 

大小的此實現我有多個方法來使用。

感謝提前。

+0

這是很容易與谷歌找到。你需要改進你的搜索技術。 – keyser 2012-04-24 09:28:19

+0

逗號是否被視爲字符?該字符串是否以逗號結尾? – sp00m 2012-04-24 09:28:40

回答

0

此正則表達式將允許1和3倍之間被重複的圖案(在此情況下,圖案是一個點,即,任何字符):

.{1,3} 

用任何正則表達式替換點。在你的情況([ACR],)

換句話說:更換+{1,3}

+1

替換+ {1,6}將允許多達12個字符,而不是6,因爲該組包含2個字符 – 2012-04-24 09:37:44

+0

這將是我的情況3,在執行命中和運行後,這是我找到的組合,解決了我的問題問題^([ACR],){1,3} $ – Ameya 2012-04-24 11:31:46

+0

@GuillaumePolet是的,它給出了模式允許重複的次數。編輯答案。 – keyser 2012-04-24 16:49:19

1

這應該工作:

([ACR],){1,3}