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
Lepaskan: 2024-12-06 14:49:12
asal
720 orang telah melayarinya

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
Salin selepas log masuk

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!");
Salin selepas log masuk

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!");
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan