Rumah >Java >javaTutorial >Mengapa Java Regex Saya Tidak Padan dengan Alamat E-mel?

Mengapa Java Regex Saya Tidak Padan dengan Alamat E-mel?

Susan Sarandon
Susan Sarandonasal
2024-12-06 14:49:12687semak imbas

Why Doesn't My Java Regex Match Email Addresses?

Pengesahan E-mel Regex Java

Soalan

Seorang pengguna menghadapi kesukaran menggunakan regex untuk pengesahan e-mel di Java. Walaupun pemadanan regex dalam operasi "cari dan ganti" dalam Eclipse, ia gagal mencari alamat e-mel menggunakan kelas Java Matcher.

Pengguna telah menyediakan regex berikut:

\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b

Dalam Java, kod yang mereka tulis ialah:

Pattern p = Pattern.compile("\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b");
Matcher m = p.matcher("[email protected]");

if (m.find())
    System.out.println("Correct!");

Walau bagaimanapun, regex gagal sepadan tanpa mengira sama ada e-mel itu terbentuk dengan baik atau tidak.

Jawapan

regex yang disediakan adalah serupa dengan yang digunakan dalam kod Java yang diberikan. Walau bagaimanapun, terdapat beberapa perbezaan utama:

  • regex yang disediakan menggunakan kelas aksara dengan pendakap, seperti [A-Z0-9._%-] . Di Java, ini harus dilepaskan sebagai [A-Z0-9._%-] .
  • Reex yang disediakan menggunakan titik sebagai aksara literal ., yang harus dilepaskan sebagai \. menggunakan garis miring ke belakang berganda dalam Java.
  • Reex yang disediakan menggunakan aksara khas b untuk memadankan permulaan perkataan, yang tidak diperlukan untuk pengesahan e-mel dan boleh dialih keluar.

Kod Java berikut telah diubah suai untuk menangani isu ini:

Pattern p = Pattern.compile("[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}");
Matcher m = p.matcher("[email protected]");

if (m.find())
    System.out.println("Correct!");

Dengan pengubahsuaian ini, regex kini sepatutnya sepadan dengan alamat e-mel di Java sebagai dijangka.

Atas ialah kandungan terperinci Mengapa Java Regex Saya Tidak Padan dengan Alamat E-mel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn