0

Javascript で動作する正規表現を取得したので、これらを Java に変換したいと思います。

            var nat_pattern2 = /^\d{8}$/;
            var nat_pattern2 = /^\d{7}\-\d{1}$/;

            var pct_pattern1 = /^\PCT\/?[A-Z]{2}?\d{4}\/\d{6}$/;
            var ing pct_pattern2 = /^\PCT[A-Z]{2}\d{10}$/;
            var pct_pattern3 = /^\P[A-Z]{2}\d{8}$/;

            var its_pattern1 = /^\ITS\/?[A-Z]{2}?\d{2}\/\d{5}$/;
            var its_pattern2 = /^\ITS[A-Z]{2}\d{7}$/;
            var its_pattern3 = /^\I[A-Z]{2}\d{7}$/;

私の始まりは次のようになりますが、正しくありません。

Pattern pattern = Pattern.compile("/^\d{8}$/");

手伝って頂けますか?

4

3 に答える 3

2

正規表現をJSからJAVAに変換するための主なポイント:

  • 周囲の必要はありません/
  • 脱出する必要があります\(例:\\.の代わりに\.
  • 逃げる必要はありません/(つまり、\/になります/
  • 最終フラグなし(例gi

これで、正規表現を自分で翻訳できるようになりました;)

于 2012-09-12T07:19:55.707 に答える
2

/Java では、正規表現を囲む必要はありません。\d正規表現を定義する文字列の一部になるためにエスケープされるため、 になり\\dます。

Pattern pattern = Pattern.compile("^\\d{8}$");

スラッシュには特別な意味がないため、エスケープする必要もありません。

Pattern natPattern1 = Pattern.compile("^\\d{8}$");
Pattern natPattern2 = Pattern.compile("^\\d{7}-\\d{1}$");

Pattern pctPattern1 = Pattern.compile("^PCT/?[A-Z]{2}?\\d{4}/\\d{6}$");
Pattern pctPattern2 = Pattern.compile("^PCT[A-Z]{2}\\d{10}$");
Pattern pctPattern3 = Pattern.compile("^P[A-Z]{2}\\d{8}$");

Pattern itsPattern1 = Pattern.compile("^ITS/?[A-Z]{2}?\\d{2}/\\d{5}$");
Pattern itsPattern2 = Pattern.compile("^ITS[A-Z]{2}\\d{7}$");
Pattern itsPattern3 = Pattern.compile("^I[A-Z]{2}\\d{7}$");
于 2012-09-12T06:41:54.703 に答える
1

\ は、Java-String でのエスケープに使用されます。したがって、 をエスケープする必要があります。したがって、文字列は次のようになります。

Pattern pattern = Pattern.compile("^\\d{8}$");

すでに述べたように、先頭と末尾の / は必要ありません。

\ に一致させたい場合は、正規表現でエスケープする必要があることに注意してください。つまり、Java 文字列で二重にエスケープする必要があります。\ に一致させるには、Java で \\ を配線する必要があります。

于 2012-09-12T06:47:01.500 に答える