2012-04-24 3 views
0

私の解決策をgoogleで検索し、最終的にここに質問を投稿することにしました。REGEXを使用した文字列検証

私の要件は、入力としてA 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

+0

コンマは文字と見なされますか?文字列はコンマで終わるべきですか? – sp00m

答えて

0

この正規表現は、パターンは1と3回の間で繰り返されるようになります(この場合は、パターン、すなわち任意の文字ドット、):

.{1,3} 

ドットを正規表現で置き換えます。あなたの場合は言い換えれば([ACR],)

:これは非常に簡単にGoogleと発見された{1,3}

+1

+を{1,6}に置き換えると、グループに2つの文字が含まれているため、12個までの文字が許可されます。 –

+0

私の場合は3になります。エグゼクティブヒットして実行すると、これは私が見つけた組み合わせです。問題の^([ACR]、){1,3} $ – Ameya

+0

@GuillaumePoletはい、パターンの繰り返しが許される回数を示します。編集された答え。 – keyser

1

これは動作するはずです:

([ACR],){1,3} 
関連する問題