Maison  >  Article  >  interface Web  >  Utilisez des expressions régulières pour filtrer les adresses e-mail/adresses e-mail

Utilisez des expressions régulières pour filtrer les adresses e-mail/adresses e-mail

php中世界最好的语言
php中世界最好的语言original
2018-05-24 10:13:1611187parcourir

Cette fois, je vais vous présenter les précautions pour utiliser les expressions régulières pour filtrer les boîtes aux lettres/adresses e-mail et pour utiliser les expressions régulières pour filtrer les boîtes aux lettres/adresses e-mail. Voici les éléments suivants. jetez un oeil à des cas pratiques.

Lors de l'enregistrement des utilisateurs, des expressions régulières pour les adresses e-mail/e-mail sont souvent utilisées. Cet article répertorie plusieurs solutions. Vous pouvez choisir la solution la plus adaptée en fonction de la situation de votre projet

En bref

Lors de l'enregistrement des utilisateurs, l'e-mail est souvent utilisé /Expression régulière pour adresse email. Cet article répertorie plusieurs options. Vous pouvez choisir l'option la plus appropriée en fonction de la situation de votre projet.

Utilisez des expressions régulières pour filtrer les adresses e-mail/adresses e-mail

Option 1 (couramment utilisée)

Les règles sont définies comme suit :

  • en lettres majuscules Il commence par des lettres [A-Z], des lettres minuscules [a-z], des chiffres [0-9], un trait de soulignement [_], un signe moins [-] et un point [.], et doit être répété une ou plusieurs fois. fois [+].

  • doit inclure le symbole @ au milieu.

  • @ doit être suivi de lettres majuscules [A-Z], de lettres minuscules [a-z], de chiffres [0-9], d'un trait de soulignement [_], d'un signe moins [-] et d'un point [ .], et doit être répété une ou plusieurs fois [+].

  • doit se terminer par un point [.] reliant 2 à 4 chiffres de lettres majuscules et minuscules [A-Za-z]{2,4}.

Utilisez les règles ci-dessus pour donner l'expression régulière suivante :

var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

Code de test complet

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  w("pattern.test(&#39;cn42du@163.com&#39;) = "+pattern.test(&#39;cn42du@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3@sina.com.cn&#39;) = "+pattern.test(&#39;ifat3@sina.com.cn&#39;)+";");
  w("pattern.test(&#39;ifat3.it@163.com&#39;) = "+pattern.test(&#39;ifat3.it@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3_-.@42du.cn&#39;) = "+pattern.test(&#39;ifat3_-.@42du.cn&#39;)+";");
  w("pattern.test(&#39;ifat3@42du.online&#39;) = "+pattern.test(&#39;ifat3@42du.online&#39;)+";");
  w("pattern.test(&#39;毛三胖@42du.cn&#39;) = "+pattern.test(&#39;毛三胖@42du.cn&#39;)+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>

Résultat du test :

pattern.test(&#39;cn42du@163.com&#39;) = true;
pattern.test(&#39;ifat3@sina.com.cn&#39;) = true;
pattern.test(&#39;ifat3.it@163.com&#39;) = true;
pattern.test(&#39;ifat3_-.@42du.cn&#39;) = true;
pattern.test(&#39;ifat3@42du.online&#39;) = false;
pattern.test(&#39;毛三胖@42du.cn&#39;) = false;
pattern.test(&#39;cn42du@163.com&#39;) = true;
pattern.test(&#39;ifat3@sina.com.cn&#39;) = true;
pattern.test(&#39;ifat3.it@163.com&#39;) = true;
pattern.test(&#39;ifat3_-.@42du.cn&#39;) = true;
pattern.test(&#39;ifat3@42du.online&#39;) = false;
pattern.test(&#39;毛三胖@42du.cn&#39;) = false;

Description de la solution 1

La solution 1 est la solution de vérification des expressions régulières de courrier électronique la plus couramment utilisée et convient à la plupart des scénarios d'application. Comme le montre le test ci-dessus, cette expression ne prend pas en charge les noms de domaine se terminant par .online et .store. Si vous devez être compatible avec ce type de nom de domaine (plus de 4 chiffres), ajustez simplement la partie restriction à la fin de l'expression régulière {2,4} (par exemple : {2,8}). Un autre problème est que les noms d’utilisateur de messagerie ne peuvent pas inclure de caractères chinois.

Option 2 (option 1 révisée)

Les règles sont complétées comme suit :

  • Les noms d'utilisateur peuvent inclure le chinois [u4e00 -u9fa5 ]

  • La fin du nom de domaine peut comporter jusqu'à 8 caractères {2,8}

  • L'expression régulière mise à jour est la suivante suit :

var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;

Code de test complet

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
  w("pattern.test(&#39;cn42du@163.com&#39;) = "+pattern.test(&#39;cn42du@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3@sina.com.cn&#39;) = "+pattern.test(&#39;ifat3@sina.com.cn&#39;)+";");
  w("pattern.test(&#39;ifat3.it@163.com&#39;) = "+pattern.test(&#39;ifat3.it@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3_-.@42du.cn&#39;) = "+pattern.test(&#39;ifat3_-.@42du.cn&#39;)+";");
  w("pattern.test(&#39;ifat3@42du.online&#39;) = "+pattern.test(&#39;ifat3@42du.online&#39;)+";");
  w("pattern.test(&#39;毛三胖@42du.cn&#39;) = "+pattern.test(&#39;毛三胖@42du.cn&#39;)+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>

Résultats du test :

pattern.test(&#39;cn42du@163.com&#39;) = true;
pattern.test(&#39;ifat3@sina.com.cn&#39;) = true;
pattern.test(&#39;ifat3.it@163.com&#39;) = true;
pattern.test(&#39;ifat3_-.@42du.cn&#39;) = true;
pattern.test(&#39;ifat3@42du.online&#39;) = true;
pattern.test(&#39;毛三胖@42du.cn&#39;) = true;

Option 3 (sécurité)

Avant l'émergence des codes de vérification des téléphones mobiles, presque la vérification des e-mails était la seule condition pour garantir l'unicité de l'utilisateur. L’émergence de boîtes aux lettres temporaires (également appelées boîtes aux lettres de 10 minutes ou boîtes aux lettres jetables) rend inutile le mécanisme de vérification des boîtes aux lettres et d’activation des comptes. Les adresses e-mail temporaires ne sont pas énumérables, nous ne pouvons donc utiliser qu'une liste blanche pour permettre à un nombre limité de noms de domaine de messagerie de passer la vérification.

Règles supplémentaires selon l'option 1 :

Le nom de domaine email ne peut être que 163.com, qq.com ou 42du.cn.
L'expression régulière est donnée comme suit :

var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/;

Code de test complet

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/;
  w("pattern.test(&#39;cn42du@163.com&#39;) = "+pattern.test(&#39;cn42du@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3@sina.com.cn&#39;) = "+pattern.test(&#39;ifat3@sina.com.cn&#39;)+";");
  w("pattern.test(&#39;ifat3.it@163.com&#39;) = "+pattern.test(&#39;ifat3.it@163.com&#39;)+";");
  w("pattern.test(&#39;ifat3_-.@42du.cn&#39;) = "+pattern.test(&#39;ifat3_-.@42du.cn&#39;)+";");
  w("pattern.test(&#39;ifat3@42du.online&#39;) = "+pattern.test(&#39;ifat3@42du.online&#39;)+";");
  w("pattern.test(&#39;毛三胖dd@42du.cn&#39;) = "+pattern.test(&#39;毛三胖@42du.cn&#39;)+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>

Résultats du test :

pattern.test(&#39;cn42du@163.com&#39;) = true;
pattern.test(&#39;ifat3@sina.com.cn&#39;) = false;
pattern.test(&#39;ifat3.it@163.com&#39;) = true;
pattern.test(&#39;ifat3_-.@42du.cn&#39;) = true;
pattern.test(&#39;ifat3@42du.online&#39;) = false;
pattern.test(&#39;毛三胖dd@42du.cn&#39;) = false;

Bien que la vérification du schéma 3 puisse garantir propriété de sécurité, mais si la liste blanche est trop longue, le motif chaîne sera trop long. À ce stade, vous pouvez écrire la liste blanche des noms de domaine de messagerie sous forme de tableau, utiliser des expressions régulières pour la vérification préliminaire et utiliser la liste blanche pour la vérification secondaire du nom de domaine.

La fonction de vérification des e-mails est désormais présentée comme suit :

var isEmail = function (val) {
  var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  var domains= ["qq.com","163.com","vip.163.com","263.net","yeah.net","sohu.com","sina.cn","sina.com","eyou.com","gmail.com","hotmail.com","42du.cn"];
  if(pattern.test(val)) {
    var domain = val.substring(val.indexOf("@")+1);
    for(var i = 0; i< domains.length; i++) {
      if(domain == domains[i]) {
        return true;
      }
    }
  }
  return false;
}
// 输出 true
isEmail(cn42du@163.com);

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres. articles connexes sur le site Web PHP chinois !

Lecture recommandée :

Comment utiliser les événements personnalisés Vue.js pour les composants de saisie de formulaire

Vue utilise le tableau suivant pour modifier le tableau Que faire lorsque la page ne s'affiche pas

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn