2012-04-24 90 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}