Periksa Alamat Email dengan JavaScript dan Ekspresi Reguler

Beberapa waktu lalu saya memasang file Pemeriksa Kekuatan Kata Sandi menggunakan JavaScript dan Ekspresi Reguler. Pada catatan yang sama, Anda juga dapat memeriksa struktur alamat email menggunakan metodologi ekspresi reguler (regex) yang sama.

Jika elemen formulir Anda memiliki id = "alamat email" dan Anda menambahkan formulir onSubmit = ”return checkEmail ();“, Ini adalah fungsi Javascript yang dapat Anda gunakan untuk mengembalikan peringatan jika alamat email memiliki struktur yang valid atau tidak:

function checkEmail() {
var email = document.getElementById('emailaddress');
var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus;
return false;
}
}

Fungsi memvalidasi konten email ke filter. Jika perbandingan gagal, itu akan memunculkan peringatan dan mengembalikan fokus ke bidang alamat email!

41 Komentar

  1. 1

    Untuk formulir dengan beberapa alamat email, sebaiknya lakukan class = "emailaddress". Jika Anda memiliki pustaka prototype.js (http://www.prototypejs.org) disertakan di halaman Anda dapat melakukan sesuatu seperti ini:

    var valid = benar;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). each (function (email) {
    if (! filter.test (email.value)) {
    alert (? Harap berikan alamat email yang valid?);
    email.fokus;
    sah = salah;
    }
    });
    kembali valid;

  2. 5
  3. 7

    Saya suka idenya, tetapi saya akan ragu-ragu untuk mengadopsi ekspresi reguler khusus ini tanpa penjelasan tentang alamat email resmi mana yang tidak diterima dan alamat ilegal mana yang diizinkan.

    Untuk contoh ekspresi reguler yang melakukan pekerjaan yang layak bersama penjelasan tentang kasus mana yang tidak dicakupnya, lihat ini:

    http://www.regular-expressions.info/email.html

    Preferensi pribadi saya adalah mencakup sebagian besar kasus sederhana dan mengeluarkan peringatan untuk yang lainnya daripada menolaknya. Jika Bob benar-benar ingin menyerah bob@com.museum daripada bob@museum.com, kenapa tidak biarkan dia?

    • 8

      Hai Reg,

      Anda dapat menguji Regex menggunakan Penguji Regex Online.

      Selain itu, pasti masih banyak lagi yang bisa dilakukan jika Anda ingin memastikan file alamat email valid sesuai dengan RFC.

      Ada beberapa alasan untuk tidak mengizinkan seseorang memasukkan alamat email yang tidak valid:
      1. Mereka akan kesal pada Anda ketika email yang mereka harapkan tidak sampai - terlepas dari apakah itu kesalahan Anda atau bukan alamat yang dimasukkan dengan benar.
      2. Jika com.museum adalah domain yang valid dan, katakanlah, Yahoo! mengoperasikannya - alamat email apa pun yang terpental akan berdampak negatif pada reputasi pengiriman email perusahaan Anda. Ini dapat menyebabkan semua email perusahaan Anda diblokir.
      3. Jika penyedia layanan email Anda mengizinkan Anda untuk masuk bob@com.museum, Anda juga akan membayar untuk setiap email yang dikirim ke alamat email tersebut hingga mereka menghentikan langganan alamat tersebut karena terpental. Saya akan menghindari ESP apa pun yang mengizinkan alamat email tidak valid seperti itu - mereka hanya mengambil uang Anda!

      Terima kasih sudah mampir!
      Doug

  4. 9
  5. 10

    Ada cara yang lebih sederhana untuk menulis ekspresi:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Dengan pengubah terakhir / i tidak perlu menunjukkan kisaran huruf besar.
    - Aku tidak tahu satupun TLD dengan angka di dalamnya.
    Di samping catatan, saya mengizinkan TLD dengan hingga 6 karakter; yang baru tiba secara teratur dan Anda tidak pernah tahu (yah, ada beberapa yang akan datang bahkan mungkin memiliki nomor di dalamnya, saya tahu).

  6. 11

    Halo,

    Saya mencoba menggunakan ini dalam formulir yang sudah ada dalam waktu nyata, tetapi tampaknya ini tidak memvalidasi dalam waktu nyata seperti pemeriksa kekuatan sandi Anda…

    Atau, apakah saya hanya tidak tahu apa-apa, dan itu tidak bekerja untuk saya?

  7. 12

    btw, saya sangat menyukai apa yang Anda lakukan di sini, tutorial Anda sangat sederhana, saya pasti akan menandai yang satu ini….

  8. 13
  9. 16
  10. 17

    Hanya koreksi kecil: Ekspresi reguler memiliki tambahan () + di akhir. Ini harus membaca:

    ^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$

    Dengan yang pertama, panjang TLD apa pun akan diterima (yang pada dasarnya tidak salah seperti yang ditunjukkan orang lain, tetapi jika itu maksudnya ungkapan dapat dipersingkat).

  11. 18

    Bisakah Anda menjelaskan ekspresi reguler kode ini dan cara kerjanya? Juga tentang .test - Apakah .test merupakan pernyataan default dalam javascript untuk memeriksa hal-hal seperti yang Anda lakukan pada kode di atas?

  12. 19

    Ini adalah kode singkat untuk ekspresi email-

    function validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    return emailPattern.test (id);

    }
    Deepak Rai
    varanasi

  13. 20

    Ini adalah kode singkat untuk ekspresi email-

    function validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    return emailPattern.test (id);

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Terima kasih, tetapi ada kesalahan pada regex ini. Saya bukan ahli regex, tapi saya mencoba email:

    tes tes

    dan itu melewati regex… Saya perhatikan itu kurang keluar dari "." jadi seharusnya:

    /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

  17. 24
  18. 27

    Ini hanya pemeriksaan kasar tetapi tidak 100% akurat, misalnya ini akan baik-baik saja john_doe. @ gmail.com yang sebenarnya bukan alamat email yang valid (titik tidak diperbolehkan sebagai karakter terakhir di bagian lokal email).
    Juga akan menerima john…doe@gmail.com yang juga tidak valid karena tidak boleh ada lebih dari satu titik dalam satu urutan.

    Ini hanya beberapa kekurangan yang saya perhatikan pada pandangan pertama.
    Maksud saya tidak bashing hanya untuk menunjukkan hal ini jika seseorang berencana menggunakan ini sebagai pemeriksaan keamanan - tidak cukup aman.

    Untuk info tentang alamat email yang valid lihat ini: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Sebenarnya, saya pikir Anda perlu menerapkan pelarian untuk titik ("."). Jadi, fungsi Anda seharusnya adalah:

    function validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    return emailPattern.test (id);

    }

    Jika tidak, titik itu berarti "karakter apa saja". Saya percaya karakter khusus seperti itu perlu diloloskan.

    Salam,

    Federico

  20. 29

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // nilai bidang dengan spasi kosong yang dipangkas
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “Masukkan Alamat email Anda”) {

    error = “Silakan masukkan alamat Email Anda.n”;
    } else if (! emailFilter.test (tfld)) {// uji email untuk karakter ilegal

    error = “Harap masukkan alamat email yang valid.n”;
    } lain jika (fld.value.match (illegalChars)) {

    error = “Harap masukkan alamat email yang valid.n”;
    }
    kesalahan pengembalian;
    }

  21. 30

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // nilai bidang dengan spasi kosong yang dipangkas
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “Masukkan Alamat email Anda”) {

    error = “Silakan masukkan alamat Email Anda.n”;
    } else if (! emailFilter.test (tfld)) {// uji email untuk karakter ilegal

    error = “Harap masukkan alamat email yang valid.n”;
    } lain jika (fld.value.match (illegalChars)) {

    error = “Harap masukkan alamat email yang valid.n”;
    }
    kesalahan pengembalian;
    }

  22. 31

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // nilai bidang dengan spasi kosong yang dipangkas
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “Masukkan Alamat email Anda”) {

    error = “Silakan masukkan alamat Email Anda.n”;
    } else if (! emailFilter.test (tfld)) {// uji email untuk karakter ilegal

    error = “Harap masukkan alamat email yang valid.n”;
    } lain jika (fld.value.match (illegalChars)) {

    error = “Harap masukkan alamat email yang valid.n”;
    }
    kesalahan pengembalian;
    }

  23. 32

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // nilai bidang dengan spasi kosong yang dipangkas
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “Masukkan Alamat email Anda”) {

    error = “Silakan masukkan alamat Email Anda.n”;
    } else if (! emailFilter.test (tfld)) {// uji email untuk karakter ilegal

    error = “Harap masukkan alamat email yang valid.n”;
    } lain jika (fld.value.match (illegalChars)) {

    error = “Harap masukkan alamat email yang valid.n”;
    }
    kesalahan pengembalian;
    }

  24. 33
  25. 34
  26. 35
  27. 36
  28. 37
  29. 38
  30. 39
  31. 40

Bagaimana menurut Anda?

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.