【Java】正規表現を使って数値をチェックする方法


プログラミング勉強日記

2020年12月4日
正規表現を使うことで、書き方によってばらつきが生じることにも対応した検索や処理を行うことができる。今日はJavaの正規表現を使った数値をチェックする方法を学んだのでまとめる。

正規表現とは

 まず、正規表現について紹介する。正規表現は文字列のパターンを表現するための記号の組み合わせのこと。正規表現を使うことでその文字が漢字・数値・メールアドレスといった特定のパターンであることを判別することができる。

正規表現の書き方

 正規表現の意味と記号を紹介する。

記号 記号の説明
. 任意の1文字。改行文字は除く
* 直前の1文字の0回以上の繰り返しと一致
^ 行の先頭
$ 行の末尾
[ ] カッコ内の任意の1文字と一致。-で範囲指定可。
[^ ] カッコ内の任意の1文字と不一致。-で範囲指定可。
+ 直前の文字の1個以上の繰り返しと一致
? 直前の文字が0個または1個の場合に一致
{ } カッコ内の数値の繰り返しと一致
|  直前、直後どちらかのパターンに一致
( ) カッコ内をグループ化。マッチした内容は参照可。
[0-9]{3}-[0-9]{4}-[0-9]{4}

 携帯の電話番号のような「090-1234-5678」といった文字列を検索したい場合はこのようになる。0から9の数字が3回続いた後に-(ハイフン)があって、また0から9の数字が4桁続いて…というように判定する。

Javaでの正規表現の使い方

 Javaでは正規表現を扱うためのライブラリが用意されている。2つのクラス(以下に示す)を使うことで、正規表現を利用したJavaのプログラムを書くことができる。

  • 正規表現文字列(パターン)を扱うためのクラスであるjava.util.regex.Patternクラス
  • 検査対象文字列がパターンに合致するか判定するためのクラスであるjava.util.regex.Matcherクラス 

サンプルコード

  1. 文字列を用意する
  2. 数値チェック用の正規表現パターンを用意する
  3. JavaのPatternクラスとMatcherクラスを使って2のパターンに1が一致するかチェックする
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    // 1.文字列を用意する
    String numberStr = "0312345678" ; // 半角数値のみ
    String numberStrNG = "03TechAchademy" ; // 英字が混ざっている

    // 2. 正規表現パターンを用意する
    String regex_num = "^[0-9]+$" ;

    // 3.Javaの正規表現ライブラリで事前準備をする
    Pattern p1 = Pattern.compile(regex_num); // 正規表現パターンの読み込み
    Matcher m1 = p1.matcher(numberStr); // パターンと検査対象文字列の照合
    boolean result1 = m1.matches(); // 照合結果をtrueまたはfalseで取得する

    // 4.結果をコンソールで出力
    if(result1) {
      System.out.print("numberStr は数値です。");
    } else {
      System.out.print("numberStr に数値以外の文字列が混じっています。");
    }
  }
}
実行結果
numberStr は数値です。

参考文献

Javaで正規表現を使って数値チェックをする方法を現役エンジニアが解説【初心者向け】