Javascript (JQuery olmadan) kullanarak e-posta adresi doğrulama nasıl yapılır?

Bir giriş metni alanı için bir e-posta adresi doğrulaması yapmaya çalışıyorum, ancak yalnızca giriş boş değilse ve içinde @ char varsa göndermelidir.

Örnek 1 çalışandır, ancak, @ char gereksinimini dışlar

function emailvalidation() {
var x=document.forms["input"]["email"].value;

if (x==null || x=="") {
    alert("Input email address, please!");
return false
}

Çalışmayan Örnek 2, ancak nasıl yazıldığını hayal ediyorum.

    function emailvalidation() {
var x=document.forms["input"]["email"].value;
var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

if (x<>null || x<>"" && x.value.match(email)) {
    alert("Input email address, please!");
return true
} else {
    alert("Input email address, please!");
return false
}
}

Bir fikri olan var mı? Yine de teşekkürler, tercihen jQuery olmadan! Teşekkürler!

0
"Çalışmamak" ne demek? Yanlış pozitif aldın mı?
katma yazar Cristik, kaynak
Yalnızca @ işaretini istiyorsanız, neden x.indexOf ('@')! = -1 kullanmıyorsunuz? İkinci işlevin muhtemelen x x.value.match (e-posta) yerine x.match (e-posta) olmalıdır. > değeri .
katma yazar putvande, kaynak
Yalnızca @ işaretini istiyorsanız, neden x.indexOf ('@')! = -1 kullanmıyorsunuz? İkinci işlevin muhtemelen x x.value.match (e-posta) yerine x.match (e-posta) olmalıdır. > değeri .
katma yazar putvande, kaynak
Yalnızca @ işaretini istiyorsanız, neden x.indexOf ('@')! = -1 kullanmıyorsunuz? İkinci işlevin muhtemelen x x.value.match (e-posta) yerine x.match (e-posta) olmalıdır. > değeri .
katma yazar putvande, kaynak
İşe yaramaz derken, ikinci örnekte başarısız olan örnekler var mı? <>! == ile değiştirmeyi denediniz mi? Bu keman içinde çalışır. || değiştirmek isteyeceksiniz ve bir de. Öğenin yerine bir dize kullandığım için .value öğesini x.value.match() öğesinden kaldırmak zorunda kaldım.
katma yazar adamdc78, kaynak
İşe yaramaz derken, ikinci örnekte başarısız olan örnekler var mı? <>! == ile değiştirmeyi denediniz mi? Bu keman içinde çalışır. || değiştirmek isteyeceksiniz ve bir de. Öğenin yerine bir dize kullandığım için .value öğesini x.value.match() öğesinden kaldırmak zorunda kaldım.
katma yazar adamdc78, kaynak
İşe yaramaz derken, ikinci örnekte başarısız olan örnekler var mı? <>! == ile değiştirmeyi denediniz mi? Bu keman içinde çalışır. || değiştirmek isteyeceksiniz ve bir de. Öğenin yerine bir dize kullandığım için .value öğesini x.value.match() öğesinden kaldırmak zorunda kaldım.
katma yazar adamdc78, kaynak
geçerli bir e-posta kullanımı regex doğrulayabilirsiniz. [[]] [1] [1] 'e başvurabilirsiniz: stackoverflow.com/questions/46155/…
katma yazar Ari Djemana, kaynak
geçerli bir e-posta kullanımı regex doğrulayabilirsiniz. [[]] [1] [1] 'e başvurabilirsiniz: stackoverflow.com/questions/46155/…
katma yazar Ari Djemana, kaynak

12 cevap

Başka bir e-posta doğrulama.

function isValidEmailAddress(emailAddress) {
            var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
            return pattern.test(emailAddress);
        };
1
katma

Başka bir e-posta doğrulama.

function isValidEmailAddress(emailAddress) {
            var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
            return pattern.test(emailAddress);
        };
1
katma

Başka bir e-posta doğrulama.

function isValidEmailAddress(emailAddress) {
            var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
            return pattern.test(emailAddress);
        };
1
katma

İlk senaryonuza ve gereksinimlerinize bağlı olarak, regex'siz bir çözüm ve birisiyle de.

Bir metin giriş alanının yalnızca dizeleri döndürdüğünü unutmayın. E-posta adresleri, @ 'dan önce bir şey içermelidir, bu nedenle ilk karakterden sonra bir @ görünüp görünmediğini kontrol ederiz ( indexOf kullanmak istemeyiz) bir regex). Ayrıca, @ 'yi bulmuşsak bu, dizenin boş olmadığı anlamına gelir !!
@ , son @ ile aynı konumdaysa ve bu konum toplam dize uzunluğundan küçükse, bu bize bir true verir. veya anında return yapabileceğimiz false değeri.
Üç koşuldan hiçbiri yerine getirilmezse, hata iletimiz alert olur. alert , undefined değerini döndürür (javascript'te false ile zorlanır, ancak) bir boole false için zorlarız çift değil !! ve return bu değeri kullanın.

İkinci örnek aynı mantığı izler, ancak bir regex kullanır.

<div class="snippet" data-lang="js" data-hide="false" data-console="false" data-babel="false"> <div class="snippet-code">

function emailvalidation(){ //without regex
  var s=document.forms.input.email.value
  ,   x=s.indexOf('@');
  return( x>0 && x===(x=s.lastIndexOf('@')) && x
<form name="input">
  <input name="email" type="text" />
</form>
<button onclick="alert(emailvalidation())">test</button>
</div> </div>

Son not, e-posta adreslerini kabul etmekte serbest olmanız iyidir , çünkü regex'te iyi bir iş yapmaya çalışmak uzun ve zordur, örneğin şu regex'e bakın: http://www.ex-parrot.com/pdw/Mail-RFC822-Add.html
Kullanıcıya e-posta göndermekten ve yanıt beklemekten başka geçerli bir e-posta adresini onaylamanın% 100 güvenilir bir yolu yoktur. Ayrıca bkz. https://softwareengineering.stackexchange.com/ sorular/78353/nasıl yapılır uzak should-tek-take-e-posta adresi doğrulama
yaparsanız 'geçerli e-posta adreslerini' düzenlemeye çalışın, o zaman işvereninize kendinize mal kalacağınızı işleyeceğinizi işletme/müşterilere bildirin/nakit !!!

0
katma

İlk senaryonuza ve gereksinimlerinize bağlı olarak, regex'siz bir çözüm ve birisiyle de.

Bir metin giriş alanının yalnızca dizeleri döndürdüğünü unutmayın. E-posta adresleri, @ 'dan önce bir şey içermelidir, bu nedenle ilk karakterden sonra bir @ görünüp görünmediğini kontrol ederiz ( indexOf kullanmak istemeyiz) bir regex). Ayrıca, @ 'yi bulmuşsak bu, dizenin boş olmadığı anlamına gelir !!
@ , son @ ile aynı konumdaysa ve bu konum toplam dize uzunluğundan küçükse, bu bize bir true verir. veya anında return yapabileceğimiz false değeri.
Üç koşuldan hiçbiri yerine getirilmezse, hata iletimiz alert olur. alert , undefined değerini döndürür (javascript'te false ile zorlanır, ancak) bir boole false için zorlarız çift değil !! ve return bu değeri kullanın.

İkinci örnek aynı mantığı izler, ancak bir regex kullanır.

<div class="snippet" data-lang="js" data-hide="false" data-console="false" data-babel="false"> <div class="snippet-code">

function emailvalidation(){ //without regex
  var s=document.forms.input.email.value
  ,   x=s.indexOf('@');
  return( x>0 && x===(x=s.lastIndexOf('@')) && x
<form name="input">
  <input name="email" type="text" />
</form>
<button onclick="alert(emailvalidation())">test</button>
</div> </div>

Son not, e-posta adreslerini kabul etmekte serbest olmanız iyidir , çünkü regex'te iyi bir iş yapmaya çalışmak uzun ve zordur, örneğin şu regex'e bakın: http://www.ex-parrot.com/pdw/Mail-RFC822-Add.html
Kullanıcıya e-posta göndermekten ve yanıt beklemekten başka geçerli bir e-posta adresini onaylamanın% 100 güvenilir bir yolu yoktur. Ayrıca bkz. https://softwareengineering.stackexchange.com/ sorular/78353/nasıl yapılır uzak should-tek-take-e-posta adresi doğrulama
yaparsanız 'geçerli e-posta adreslerini' düzenlemeye çalışın, o zaman işvereninize kendinize mal kalacağınızı işleyeceğinizi işletme/müşterilere bildirin/nakit !!!

0
katma

İlk senaryonuza ve gereksinimlerinize bağlı olarak, regex'siz bir çözüm ve birisiyle de.

Bir metin giriş alanının yalnızca dizeleri döndürdüğünü unutmayın. E-posta adresleri, @ 'dan önce bir şey içermelidir, bu nedenle ilk karakterden sonra bir @ görünüp görünmediğini kontrol ederiz ( indexOf kullanmak istemeyiz) bir regex). Ayrıca, @ 'yi bulmuşsak bu, dizenin boş olmadığı anlamına gelir !!
@ , son @ ile aynı konumdaysa ve bu konum toplam dize uzunluğundan küçükse, bu bize bir true verir. veya anında return yapabileceğimiz false değeri.
Üç koşuldan hiçbiri yerine getirilmezse, hata iletimiz alert olur. alert , undefined değerini döndürür (javascript'te false ile zorlanır, ancak) bir boole false için zorlarız çift değil !! ve return bu değeri kullanın.

İkinci örnek aynı mantığı izler, ancak bir regex kullanır.

<div class="snippet" data-lang="js" data-hide="false" data-console="false" data-babel="false"> <div class="snippet-code">

function emailvalidation(){ //without regex
  var s=document.forms.input.email.value
  ,   x=s.indexOf('@');
  return( x>0 && x===(x=s.lastIndexOf('@')) && x
<form name="input">
  <input name="email" type="text" />
</form>
<button onclick="alert(emailvalidation())">test</button>
</div> </div>

Son not, e-posta adreslerini kabul etmekte serbest olmanız iyidir , çünkü regex'te iyi bir iş yapmaya çalışmak uzun ve zordur, örneğin şu regex'e bakın: http://www.ex-parrot.com/pdw/Mail-RFC822-Add.html
Kullanıcıya e-posta göndermekten ve yanıt beklemekten başka geçerli bir e-posta adresini onaylamanın% 100 güvenilir bir yolu yoktur. Ayrıca bkz. https://softwareengineering.stackexchange.com/ sorular/78353/nasıl yapılır uzak should-tek-take-e-posta adresi doğrulama
yaparsanız 'geçerli e-posta adreslerini' düzenlemeye çalışın, o zaman işvereninize kendinize mal kalacağınızı işleyeceğinizi işletme/müşterilere bildirin/nakit !!!

0
katma

You have a couple of logical problems in your solution.
Firstly, the condition is that x is not null and x is not an empty string and x matches the pattern.
Secondly, <> is the wrong comparator for javascript; use != or !==.
Thirdly, as pointed out by putvande x is already the element's value, so x.value.match() is probably causing you issues.

function emailvalidation() {
  var x = document.forms["input"]["email"].value;
  var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

  if (x !== null && x !== "" && x.match(email)) {
    return true;
  } else {
    alert("Input email address, please!");
    return false;
  }
}
0
katma
Bunu söylediğim gibi kendi yorumumu yazdım, bunun için çok teşekkür ederim, bana çok şey öğrettin! :)
katma yazar WorkingScript, kaynak

You have a couple of logical problems in your solution.
Firstly, the condition is that x is not null and x is not an empty string and x matches the pattern.
Secondly, <> is the wrong comparator for javascript; use != or !==.
Thirdly, as pointed out by putvande x is already the element's value, so x.value.match() is probably causing you issues.

function emailvalidation() {
  var x = document.forms["input"]["email"].value;
  var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

  if (x !== null && x !== "" && x.match(email)) {
    return true;
  } else {
    alert("Input email address, please!");
    return false;
  }
}
0
katma
Bunu söylediğim gibi kendi yorumumu yazdım, bunun için çok teşekkür ederim, bana çok şey öğrettin! :)
katma yazar WorkingScript, kaynak

You have a couple of logical problems in your solution.
Firstly, the condition is that x is not null and x is not an empty string and x matches the pattern.
Secondly, <> is the wrong comparator for javascript; use != or !==.
Thirdly, as pointed out by putvande x is already the element's value, so x.value.match() is probably causing you issues.

function emailvalidation() {
  var x = document.forms["input"]["email"].value;
  var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

  if (x !== null && x !== "" && x.match(email)) {
    return true;
  } else {
    alert("Input email address, please!");
    return false;
  }
}
0
katma
Bunu söylediğim gibi kendi yorumumu yazdım, bunun için çok teşekkür ederim, bana çok şey öğrettin! :)
katma yazar WorkingScript, kaynak

Bunun için hepinize teşekkür ederim! Çözüm, tüm cevapların bir karışımıydı! Yine de, işte son çözüm! Yeni bir reg ifadesi gerekli ve! ==

Hepinize teşekkürler, bir JS acemisinden, gerçekten takdir edilir

function emailvalidation() {

var x=document.forms["input"]["email"].value;
var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

if (x !== null && x !== "" && x.match(email)) {
return true
} else {
    alert("Input email address, please!");
return false
}
}
0
katma

Bunun için hepinize teşekkür ederim! Çözüm, tüm cevapların bir karışımıydı! Yine de, işte son çözüm! Yeni bir reg ifadesi gerekli ve! ==

Hepinize teşekkürler, bir JS acemisinden, gerçekten takdir edilir

function emailvalidation() {

var x=document.forms["input"]["email"].value;
var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

if (x !== null && x !== "" && x.match(email)) {
return true
} else {
    alert("Input email address, please!");
return false
}
}
0
katma

Bunun için hepinize teşekkür ederim! Çözüm, tüm cevapların bir karışımıydı! Yine de, işte son çözüm! Yeni bir reg ifadesi gerekli ve! ==

Hepinize teşekkürler, bir JS acemisinden, gerçekten takdir edilir

function emailvalidation() {

var x=document.forms["input"]["email"].value;
var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

if (x !== null && x !== "" && x.match(email)) {
return true
} else {
    alert("Input email address, please!");
return false
}
}
0
katma