2016-11-29 10 views
0

次の条件の正規表現のロジックを書くには、これについて助けが必要です。ユーザキー付きコードは 3バイトが許可
特殊文字、数字でなければならないアルファ(具体的にはA、B、P)またはすべての3つの数字を有することができる特定の1桁のアルファベットと数字の3桁コードの正規表現論理

3バイト最大 第1バイトを有するべきです。

Examples, 
A23  - match 
B45  - match 
P71  - match 
A3  - match 
418  - match 
91  - match    

C23  - not match 
AC2  - not match 
D3  - not match 

私は表現を試しましたが、運はありませんでした。ロジックは

alphaNumericRegExp =/[A,B,P][0-9]{3}/ 

Matcher matcher = mask.matcher(service.getRacprCd1()); 
Matcher matcher1=digitPattern.matcher(service.getRacprCd1()); 

if (!matcher.matches()) { 
    vectErrMsgs.add("Pr code is not valid. ");   
} 
+0

'if(your_string.matches(" [ABP0-9]?[0-9] {2} ")){/ * valid * /}' –

+0

お返事ありがとうございます。 – RBM

+0

そして?それは動作しますか? –

答えて

0

あなたはmatcher.matches()

alphaNumericRegExp =/[ABP0-9]?[0-9]{1,2}/ 

を使用して削除し、それは完全な文字列が一致し、^$アンカーを追加する必要はありませんが必要です。それは一致します。

  • [ABP0-9]?を - オプションABP、または数字
  • [0-9]{1,2}から1または2桁

注文字クラス内の|が、それは文字通りと一致せていることパイプシンボル。

0

論理的に分割されています。最初の文字はA、B、P、数字、または(私が正しく理解すれば)何もありません。したがって:

[ABP\d]? 

次に1桁または2桁の数字が必要です。

\d{1,2} 
だから、すべて一緒

^[ABP\d]?\d{1,2}$ 

一つの落とし穴、これは一桁を可能にします。私はあなたの質問からそれが許されているかどうかは分かりません。コードは、少なくとも2文字の長さでなければならない場合、?

関連する問題