Soru JavaScript Normal İfade E-posta Doğrulaması [çoğalt]


Bu sorunun zaten bir cevabı var:

Bu kod her zaman uyarı veriyor "null"Bu, dizenin ifadeyle uyuşmadığı anlamına gelir.

var pattern = "^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$"; 

function isEmailAddress(str) {

    str = "azamsharp@gmail.com";      

    alert(str.match(pattern)); 
    return str.match(pattern);    

}

76
2018-06-02 16:40


Menşei


E-posta doğrulama zor. Pragmatik olarak yalnızca bir tane @ 'i içerdiğini ve en az bir tane olduğunu varsayabilirsiniz. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ E-posta adlandırma politikasının daha yapılandırılmış olduğu belirli bir alan için doğrulamadığınız sürece. - AnthonyWJones
Kesinlikle konuştuğunuz gibi bir şey olduğunu bile düşünemezsiniz. yere. Örneğin, en üst düzeyde MX kayıtları olan ua ccTLD'ye bakın. - Ian
Neden formda "= email" yazmıyorsunuz? @azamsharp - PT_C


Cevaplar:


Düzenli ifadenizi bir dize olarak tanımlarsanız, tüm ters eğik noktaların atlanması gerekir, bu nedenle '\ w' yerine '\\ w' olmalıdır.

Alternatif olarak, bunu normal bir ifade olarak tanımlayın:

var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/; 

BTW, lütfen istemci tarafında e-posta adreslerini doğrulamayın. Düzenli ifadeniz, yine de katı bir uygulama için geçmek için çok basit.

Buradaki gerçek şeyi görün: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html


61
2018-06-02 16:45



Bu normal ifade, john.smith@gmail.com gibi adresleri desteklemiyor - Nadia Alramli
emailadd@gmail.com.sa gibi e-postaları desteklemiyor - Amr Badawy
E-posta adresleri neden istemci tarafında doğrulanmamalıdır? Şüphesiz, veriyi doğrulamak için bir ağda birden çok HTTP isteği yapmamız gerekmediğinden, doğrulama istemcisi tarafının çok daha hızlı bir şeklidir. (yavaş bir Wifi veya mobil ağlar üzerinden bir sunucuyla bağlantı kurabilen mobil uygulamalar için özellikle önemlidir). - Ciaran Gallagher
Bu ifade arzulanan bir çok şey bırakıyor: 1) tire ve artı gibi birçok geçerli kullanıcı adı karakterini reddediyor; 2), birden fazla ccTLD'de bulunan, 2'den fazla bölümle etki alanlarına izin vermez. geek.co.il; 3) 4 veya daha fazla karakter kullanan yeni TLD'lerin çoğuna izin vermez. mobi ve info; 4) IDN'yi hiç desteklemez. - Guss
@CiaranGallagher, performans konusunda haklısınız. Ancak, güvenlik açısından, istemci tarafı JS sizi XSS, SQL enjeksiyonu veya diğer güvenlik açıklarından korumaz. IMHO, kullanıcılarınızın girdiği verileri kaybetmemesi için ön uçta bazı temel doğrulamaların yapılması en iyisidir (EX: boş alanları kontrol et, telefon numaralarını veya SSN'yi doğrula). Ancak, uygulamanızı her zaman sunucuda açık kaynaklı yüksek kalibreli sanitizasyon koduyla sağlamalısınız. - Rustavore


Bu, sayfamda kullanıyorum.

http://www.zparacha.com/validate-email-address-using-javascript-regular-expression/

/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/


26
2018-06-27 23:55



'+' Adresini, yani "user+label@gmail.com" adresini desteklemez. - Jolly Roger
Bu bazıları için başarısız olacak yeni alanlar - GP89
Aferin ve teşekkürler. Bu gördüğüm daha iyi olanlardan biri. - RushVan
Bu da geçersiz. En üst düzey alanların listesine bakın iana.org/domains/root/db - Daniel


Bu işlevi bir süredir kullanıyorum. bir boole değeri döndürür.

// Validates email address of course.
function validEmail(e) {
    var filter = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
    return String(e).search (filter) != -1;
}

13
2017-08-31 20:46



Bunun eski olduğunu biliyorum, ancak bu basitleştirilebilir: String (e) .match (/ ^ \ s * [\ w \ - \ + _] + (?: \. [\ W \ - \ + _] .? *) * \ @ [\ w \ - \ + _] + \ [\ w \ - \ + _] +. (: \ [\ w \ - \ + _] +) * \ s * $ /) ; Eşleşmiyorsa e-posta adresinin kendisiyle eşleşmesi ve tek bir öğe dizisi varsa null döndürür. - Andir
Bence regex'in doğrulayamadığını düşünüyorum, diyelim ki, nicolas. @ Gmail.com ... Bu RFC822 uyumlu mu? Emin değilim. Doğrulamak isteyen var mı? - nembleton
Aaa-------@gmail.com değerini doğru olarak verir. - Imran


İlginizi çekebilir bu soru (veya Bu), geçerli e-posta adreslerinin regex'ler aracılığıyla tanımlanmasının çözülmesi zor bir problem olduğu gerçeğini vurgulayan (tüm çözülebilirse)


11
2018-06-02 16:47





function isEmailAddress(str) {
   var pattern =/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
   return pattern.test(str);  // returns a boolean 
}

8
2018-04-24 09:59



buna göre test@test.info bir e-posta değil - tborychowski


daha basit

İşte burada :

var regexEmail = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
var email = document.getElementById("txtEmail");

if (regexEmail.test(email.value)) {
    alert("It's Okay")
} else {
    alert("Not Okay")

}

iyi şanslar.


7
2017-12-06 14:12



Bunu yazarken, bu işe yaradı .... haydi bunların bir kısmından geçtiğim için bu şekilde kalmasını umalım;) - Andrew Odendaal
HUEI90@gmail.com' bu kalıbı geçirecek, ancak ^ => ekleyerek /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/ sorunu çözebilir - Huei Tan


Bazen kayıt ve giriş sayfasının çoğu e-postayı doğrulamak zorundadır. Bu örnekte basit e-posta doğrulamasını öğreneceksiniz. Önce html'de bir metin girişi ve bunun gibi bir düğme girişi yapın

<input type='text' id='txtEmail'/>
<input type='submit' name='submit' onclick='checkEmail();'/>

<script>
    function checkEmail() {
        var email = document.getElementById('txtEmail');
        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;
        }
    }
</script>

bu normal ifadeyi kullanarak da kontrol edebilirsiniz

<input type='text' id='txtEmail'/>
<input type='submit' name='submit' onclick='checkEmail();'/>

<script>
    function checkEmail() {

        var email = document.getElementById('txtEmail');
        var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

        if (!filter.test(email.value)) {
            alert('Please provide a valid email address');
            email.focus;
            return false;
        }
    }
</script>

Buradan kontrol edebileceğiniz bu demo çıkışını kontrol edin

function checkEmail() {
        var email = document.getElementById('txtEmail');
        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;
        }
    }
<input type='text' id='txtEmail'/>
<input type='submit' name='submit' onclick='checkEmail();'/>

E-posta geçersizse uyarı mesajı verin, geçerli bir e-posta adresi varsa, uyarı mesajı yok. düzenli ifade hakkında daha fazla bilgi için

https://www.w3schools.com/jsref/jsref_obj_regexp.asp

umarım yardımcı olur


7
2017-09-23 17:07



Noktası ne {2,4} eğer varsa + ondan sonra? - developerbmw
sonra geçersiz e-posta gösterecektir, bana örnek e-posta adresi verebilir misiniz? - Shafiqul Islam


Buna bir göz atmak ilginizi çekebilir sayfa Daha genel vakaları kapsayan e-posta adresini doğrulamak için düzenli ifadeler listeler.


5
2018-06-02 16:49





E-posta doğrulama yanlış olsun kolaydır. Bu yüzden kullanmanızı tavsiye ederim Verimail.js.

Niye ya?

  • Sözdizimi doğrulaması (RFC 822'ye göre).
  • IANA TLD doğrulama
  • En yaygın TLD'ler ve e-posta alanları için yazım önerisi
  • Mailinator.com gibi geçici e-posta hesabı alanlarını engelle
  • jQuery eklenti desteği

Verimail.js ile başka bir harika şey, en yaygın e-posta alanları ve kayıtlı TLD'lerin yazım önerisi olmasıdır. Bu, hemen çıkma oranınızı gmail.com, hotmail.com, aol.com, aso gibi yaygın alan adlarını yanlış yazanlar için önemli ölçüde azaltabilir.

Örnek:

  • test@gnail.com -> test@gmail.com 'i mu demek istediniz?
  • test@hottmail.con -> Bunu test@hotmail.com mu demek istediniz?

Bu nasıl kullanılır?

En kolay yol, indirip dahil etmektir. verimail.jquery.js sayfanda. Bundan sonra, onaylama gerektiren giriş kutusunda aşağıdaki işlevi çalıştırarak Verimail'i bağlayın:

$("input#email-address").verimail({
    messageElement: "p#status-message"
});

Mesaj elemanı, "Geçersiz e-posta .." veya "Test@gmail.com mu demek istediniz?" Gibi bir mesajı görüntüleyen isteğe bağlı bir öğedir. Bir formunuz varsa ve yalnızca e-posta doğrulanmışsa devam etmek istiyorsanız, getVerimailStatus işlevini aşağıdaki gibi kullanabilirsiniz:

if($("input#email-address").getVerimailStatus() < 0){
    // Invalid email
}else{
    // Valid email
}

GetVerimailStatus işlevi, Comfirm.AlphaMail.Verimail.Status nesnesine göre bir tamsayı kodu döndürür. Yukarıda gösterildiği gibi, durum negatif bir tam sayı ise, doğrulama bir hata olarak ele alınmalıdır. Ancak, değer 0'a eşit veya daha büyükse, o zaman doğrulama bir başarı olarak ele alınmalıdır.


5
2017-10-09 16:17





Bunu kullanıyorum ....

/^[\w._-]+[+]?[\w._-]+@[\w.-]+\.[a-zA-Z]{2,6}$/

Bunu sağlar + önce @  (xyz+abc@xyz.com)


3
2017-12-28 06:27



Bu, aslında işe yarayan tek model budur! - tborychowski
Hayır, alanın tld'nin 6 karakterden uzun olması gibi .software Örneğin. - emix