2017-07-20 10 views
1

私はマッチ( "regex")を使って例外をスローしようとしていますが、いつも間違っています。タイトルのパターンと一致する方法はありますか?たとえば、パターンは「s98340」または「s12345」でなければなりません。冒頭には1文字しかなく、その後に5桁が続きます。 は、例外をキャッチするために:私は、SR = "s4a234" の文字列を設定するとjava regex:1文字のパターンが5桁の範囲で続く0-9

try{ 
     if(originalLocation.length() != 6 && originalLocation.matches("s[0-9]{5}")) 
      throw new IllegalOriginalLocationException("Original Location is invalid."); 
    } 
    catch(IllegalOriginalLocationException ex){ 
     System.out.println(ex); 
    } 

を、例外がキャッチされていません。

+3

表示されるコードと*具体的なエラーをさらに表示してください。 – Makoto

+3

パターンは正しいです。 's.matches(" s [0-9] {5} ")'は、文字列が 's'で始まり正確に5桁の場合にのみtrueを返します。 –

+0

は 'patternとmatcher'で' find'を使いたいと思っています –

答えて

1

文字列のようにs98340をメソッドに渡すと、originalLocation.length() != 6条件はfalseを返します。したがって、現在の動作を取得します。

正規表現はすでに6-char型のみの文字列にマッチするので、その状態を除去するのに十分である:

try { 
    if(originalLocation.matches("s[0-9]{5}")) 
     throw new IllegalOriginalLocationException("Original Location is invalid."); 
} 
catch(IllegalOriginalLocationException ex) { 
    System.out.println(ex); 
} 

originalLocation.matches("s[0-9]{5}")ラインは、文字列がsで開始し、正確に5 ASCII数字を持っていることを確認します。 .matches()のパターンは、デフォルトでは文字列の開始と終了の両方に固定されています。

0

intenta詐欺のLO siguiente: 試し{ 場合 ...

(originalLocation.matches( " ^[a-zA-Z]の\ D \ D \ D \ D \ D")!)

[a-zA-Z]の下位または上位 [AZ]下のみ

私は "s4a234" と "A12345" と成功とのテストはよ!

関連する問題