10あなたが知るべきJavaの正規表現の例

知っておくべき10のJava正規表現の例

正規表現はプログラミングの技術であり、デバッグ、学習、理解するのは困難ですが、強力な機能は依然として多くの開発者を正規表現のコーディングに引き付けます。 次の10の実用的な正規表現を見ていきましょう。

1. ユーザー名の正規表現パターン

 ^[a-z0-9_-]{3,15}$
^                    # Start of the line
  [a-z0-9_-]         # Match characters and symbols in the list, a-z, 0-9 , underscore , hyphen
             {3,15}  # Length at least 3 characters and maximum length of 15
$                    # End of the line

2. パスワードの正規表現パターン

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})
(           # Start of group
  (?=.*\d)      #   must contains one digit from 0-9
  (?=.*[a-z])       #   must contains one lowercase characters
  (?=.*[A-Z])       #   must contains one uppercase characters
  (?=.*[@#$%])      #   must contains one special symbols in the list "@#$%"
              .     #     match anything with previous condition checking
                {6,20}  #        length at least 6 characters and maximum of 20
)           # End of group

3. 16進カラーコードの正規表現パターン

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
^        #start of the line
 #       #  must constains a "#" symbols
 (       #  start of group #1
  [A-Fa-f0-9]{6} #    any strings in the list, with length of 6
  |      #    ..or
  [A-Fa-f0-9]{3} #    any strings in the list, with length of 3
 )       #  end of group #1
$        #end of the line

4. メールの正規表現パターン

^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+
(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$
^           #start of the line
  [_A-Za-z0-9-]+    #  must start with string in the bracket [ ], must contains one or more (+)
  (         #  start of group #1
    \\.[_A-Za-z0-9-]+   #     follow by a dot "." and string in the bracket [ ], must contains one or more (+)
  )*            #  end of group #1, this group is optional (*)
    @           #     must contains a "@" symbol
     [A-Za-z0-9]+       #        follow by string in the bracket [ ], must contains one or more (+)
      (         #      start of group #2 - first level TLD checking
       \\.[A-Za-z0-9]+  #        follow by a dot "." and string in the bracket [ ], must contains one or more (+)
      )*        #      end of group #2, this group is optional (*)
      (         #      start of group #3 - second level TLD checking
       \\.[A-Za-z]{2,}  #        follow by a dot "." and string in the bracket [ ], with minimum length of 2
      )         #      end of group #3
$           #end of the line

5. 画像ファイル拡張子の正規表現パターン

([^\s]+(\.(?i)(jpg|png|gif|bmp))$)
(           #Start of the group #1
 [^\s]+         #  must contains one or more anything (except white space)
       (        #    start of the group #2
         \.     #   follow by a dot "."
         (?i)       #   ignore the case sensitive checking
             (      #     start of the group #3
              jpg   #       contains characters "jpg"
              |     #       ..or
              png   #       contains characters "png"
              |     #       ..or
              gif   #       contains characters "gif"
              |     #       ..or
              bmp   #       contains characters "bmp"
             )      #     end of the group #3
       )        #     end of the group #2
  $         #  end of the string
)           #end of the group #1

6. IPアドレスの正規表現パターン

^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.
([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$
^       #start of the line
 (      #  start of group #1
   [01]?\\d\\d? #    Can be one or two digits. If three digits appear, it must start either 0 or 1
        #    e.g ([0-9], [0-9][0-9],[0-1][0-9][0-9])
    |       #    ...or
   2[0-4]\\d    #    start with 2, follow by 0-4 and end with any digit (2[0-4][0-9])
    |           #    ...or
   25[0-5]      #    start with 2, follow by 5 and end with 0-5 (25[0-5])
 )      #  end of group #2
  \.            #  follow by a dot "."
....            # repeat with 3 time (3x)
$       #end of the line

7. 時間形式の正規表現パターン

12時間形式の正規表現パターンでの時間

(1[012]|[1-9]):[0-5][0-9](\\s)?(?i)(am|pm)
(               #start of group #1
 1[012]             #  start with 10, 11, 12
 |              #  or
 [1-9]              #  start with 1,2,...9
)               #end of group #1
 :              #    follow by a semi colon (:)
  [0-5][0-9]            #   follow by 0..5 and 0..9, which means 00 to 59
            (\\s)?      #        follow by a white space (optional)
                  (?i)      #          next checking is case insensitive
                      (am|pm)   #            follow by am or pm

24時間形式の正規表現パターンでの時間

([01]?[0-9]|2[0-3]):[0-5][0-9]
(               #start of group #1
 [01]?[0-9]         #  start with 0-9,1-9,00-09,10-19
 |              #  or
 2[0-3]             #  start with 20-23
)               #end of group #1
 :              #  follow by a semi colon (:)
  [0-5][0-9]            #    follow by 0..5 and 0..9, which means 00 to 59

8. 日付形式(dd / mm / yyyy)正規表現パターン

(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)
(           #start of group #1
 0?[1-9]        #  01-09 or 1-9
 |                      #  ..or
 [12][0-9]      #  10-19 or 20-29
 |          #  ..or
 3[01]          #  30, 31
)           #end of group #1
  /         #  follow by a "/"
   (            #    start of group #2
    0?[1-9]     #   01-09 or 1-9
    |           #   ..or
    1[012]      #   10,11,12
    )           #    end of group #2
     /          #   follow by a "/"
      (         #     start of group #3
       (19|20)\\d\\d    #       19[0-9][0-9] or 20[0-9][0-9]
       )        #     end of group #3

9. HTMLタグの正規表現パターン

<("[^"]*"|'[^']*'|[^'">])*>
<        #start with opening tag "<"
 (      #   start of group #1
   "[^"]*"  #   only two double quotes are allow - "string"
   |        #   ..or
   '[^']*'  #   only two single quotes are allow - 'string'
   |        #   ..or
   [^'">]    #   cant contains one single quotes, double quotes and ">"
 )      #   end of group #1
 *      # 0 or more
>        #end with closing tag ">"

HTML Aタグの正規表現パターン

(?i)]+)>(.+?)
(       #start of group #1
 ?i     #  all checking are case insensive
)       #end of group #1
]+    #     anything except (">"), at least one character
   )        #  end of group #2
  >      #     follow by ">"
    (.+?)   #   match anything
          #     end with "
\s*(?i)href\s*=\s*(\"([^"]*\")|'[^']*'|([^'">\s]+));
\s*            #can start with whitespace
  (?i)             # all checking are case insensive
     href          #  follow by "href" word
        \s*=\s*        #   allows spaces on either side of the equal sign,
              (        #    start of group #1
               "([^"]*")   #      only two double quotes are allow - "string"
               |       #      ..or
               '[^']*'     #      only two single quotes are allow - 'string'
               |           #      ..or
               ([^'">]+)   #     cant contains one single / double quotes and ">"
          )        #    end of group #1