Javaの正規表現で有効なメールアドレスを検証する方法
入力された文字列が有効なメールアドレスかどうかを判定するには、以下の正規表現パターンと照合します。
"^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$"
正規表現の各要素の意味
- ^:文字列の先頭に一致します。
- [a-zA-Z0-9+_.-]:「@」より前の部分で、英字(大文字・小文字)、数字、「+」「_」「.」「-」のいずれか1文字に一致します。
- +:直前の文字セットが1回以上繰り返されることを表します。
- @:「@」記号そのものに一致します。
- [a-zA-Z0-9.-]:「@」より後の部分で、英字(大文字・小文字)、数字、「.」「-」のいずれか1文字に一致します。
- $:文字列の末尾に一致します。
サンプルコード1:matches()メソッドを使う方法
Stringクラスのmatches()メソッドを使うと、正規表現との照合をシンプルなコードで実現できます。
import java.util.Scanner;
public class ValidatingEmail {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("メールアドレスを入力してください:");
String email = sc.next();
String regex = "^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$";
// 入力されたメールアドレスを正規表現と照合
boolean result = email.matches(regex);
if (result) {
System.out.println("入力されたメールアドレスは有効です");
} else {
System.out.println("入力されたメールアドレスは無効です");
}
}
}実行結果1
メールアドレスを入力してください: example.samplemail@gmail.com 入力されたメールアドレスは有効です
実行結果2
メールアドレスを入力してください: sample?examplemail@gmail.com 入力されたメールアドレスは無効です
サンプルコード2:PatternとMatcherを使う方法
java.util.regexパッケージのPatternクラスとMatcherクラスを利用すると、同じ正規表現を再利用したり、より柔軟なマッチング処理を行ったりできます。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("名前を入力してください:");
String name = sc.nextLine();
System.out.println("メールアドレスを入力してください:");
String email = sc.next();
// 有効なメールアドレスを受け付ける正規表現
String regex = "^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$";
// Patternオブジェクトを生成
Pattern pattern = Pattern.compile(regex);
// Matcherオブジェクトを生成
Matcher matcher = pattern.matcher(email);
// メールアドレスが有効かどうかを検証
if (matcher.matches()) {
System.out.println("入力されたメールアドレスは有効です");
} else {
System.out.println("入力されたメールアドレスは無効です");
}
}
}実行結果1
名前を入力してください: vagdevi メールアドレスを入力してください: sample.123@gmail.com 入力されたメールアドレスは有効です
実行結果2
名前を入力してください: raja メールアドレスを入力してください: raja$test@gmail.com 入力されたメールアドレスは無効です
補足:この正規表現の限界
上記のパターンは、日常的によく使われるメールアドレス形式の簡易チェックには十分ですが、RFC 5322で定義された正式な仕様を完全にカバーしているわけではありません。実運用のシステムでは、Apache Commons Validatorのような検証ライブラリの活用や、確認メールの送信による実在性チェックと組み合わせることで、より堅牢なバリデーションを実現できます。
-
Pythonの正規表現でテキストからメールアドレスを抽出する方法
メールアドレスは非常に複雑で、世界中で統一された標準規格が存在しないため、正規表現だけでメールアドレスを正確に識別するのは容易ではありません。そこで役立つのが RFC 5322 です。この規格ではメールアドレスの形式が定義されており、本記事ではこの形式をもとに、テキストからメールアドレスを抽出する方法を解説します。たとえば、次のような入力文字列が与えられた場合を考えてみましょう。Hi my name is John and email address is john.doe@somecompany.co.uk and my friends email is jane_doe124@gmail.
-
Javaの正規表現で文字列から数値を抽出する方法
Javaの正規表現(Regular Expression)を使えば、文字列の中から数値だけを簡単に取り出すことができます。この記事では、実際のコード例とともに、さまざまなパターンでの数値抽出の方法を解説します。文字列を解析し、必要な情報を抜き出すスキルは、テスターにとって欠かせない能力の一つです。特にAPIテストでは、JSONやXML形式のレスポンスを解析する場面が多く、正規表現の知識が大いに役立ちます。以下では、Javaの正規表現を使って文字列から数字・数値を抽出する具体的な例を紹介します。文字列からすべての数値を抽出するimport java.util.regex.Matcher; imp