2017-11-30 20 views
-3

正規表現がこれを行う最良の方法であるかどうかはよくわかりません。固定長などをチェックするJavaの正規表現

  1. は、長さをチェックするために13文字
  2. 最初と最後の2つの文字は常に文字だけされている。ここでは、文字列の要件があります。
  3. 3 - 11の文字は数字です。

正規表現がこれを行う最良の方法であるかどうか、正規表現がそのようなことを確認したいかどうかをご確認ください。

よろしく アクヒル

+0

はい、あなたはこのために正規表現を使用することができます '^ [AZ] {2} \ D {9} [AZ]' i'修飾 – ctwheels

+0

と{2} $ 'だけのためにあなたが最初と最後の2文字が常に文字のみであると言うとき、あなたはAからZのアルファベット文字を意味するのでしょうか?彼らはいつも大文字か小文字のどちらかになりますか?もしそうなら、どちらですか? – AntonH

+0

これを行うために表現を工夫する必要がある場合は、後で理解することが難しいことを意味します。いくつかのテストで簡単なループを書くと、誰にでも明確で容易に更新されます。正規表現について質問するために投稿する必要がある場合は、A)コード内でやっているよりも多くの時間を無駄にしてしまいました。そして、B)次回にそれを使いこなす時間を無駄にします。あなたが正規表現を知っていれば、それを聞かずにそれを行うことができると分かっているなら、それは大丈夫であるはずです(他の誰もあなたのコードを見ない限り)。 –

答えて

2

使用例

"^[a-z]{2}[0-9]{9}[a-z]{2}$" 

大括弧で囲まれた部分は「a-z」はaとzの間の小さなアルファベットを意味します。かっこには何人がそこにいなければならないかが書かれている^はこれの前に文字がないことを意味し、$は後に文字がないことを意味します。

使用法:

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

public class MatcherExample { 

    public static void main(String[] args) { 

     String text = "aa123456789bb"; 

     String patternString = "^[a-z]{2}[0-9]{9}[a-z]{2}$"; 

     Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE); 

     Matcher matcher = pattern.matcher(text); 
     boolean matches = matcher.matches(); 
     System.out.println("Matches: " + matches); 
    } 
} 
+0

表現の短い内訳は、彼が明らかに正規表現についてあまり知りませんので、OPに役立つかもしれません。 – Thomas

+0

wow..thisこれはとても速く、私が言うこともできる、それは初めてstackoverflowを使用した。多くの皆さん、ありがとうございます。 – Akhil

+1

大文字の場合もUTF-8の文字もカバーしていません! –