XRegExp для адреса электронной почты

Я хочу написать регулярное выражение для адреса электронной почты для всех, включая не курсивные символы.

Я пытался, но он возвращает ложь

Пожалуйста, предоставьте правильное решение как можно скорее

 <!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript">
 var em = XRegExp('^([\\p{L}+|\\p{N}*][@][\\p{L}+][.][\\p{L}+])$'); // Please help me to correct it
 jQuery(function(){
  jQuery('input').blur(function(){
   console.log(jQuery(this).val());
   console.log(em.test(jQuery('#t1').val()));
   
  });
 });
 
</script>
 <title></title>
</head>
<body>
Enter Name: <input type="text" name="t1" id="t1" class="kcd">
</body>
</html>

1 ответ

Решение

Хотя существуют и более эффективные средства проверки правильности регулярного выражения электронной почты (см. Tushar), я хотел бы объяснить, в чем заключается проблема с регулярным выражением.

^([\\p{L}+|\\p{N}*][@][\\p{L}+][.][\\p{L}+])$ содержит неправильно сформированные классы персонажей [\\p{L}+|\\p{N}*] а также [\\p{L}+], Они соответствуют одному символу, определенному внутри них - [\\p{L}+|\\p{N}*] соответствует либо p, {, L и т. д. и [\\p{L}+] соответствует либо p, {, L, }, или же +,

Если вы планируете использовать свой подход, вы можете исправить регулярное выражение как

XRegExp('^[\\p{L}\\p{N}]+@\\p{L}+[.]\\p{L}+$')

Детали:

  • ^ - начало строки
  • [\\p{L}\\p{N}]+ - одна или несколько букв Unicode или цифр
  • @ - знак "на"
  • \\p{L}+ - одна или несколько букв Unicode
  • [.] - буквальная точка
  • \\p{L}+ - Там же.
  • $ конец строки.
Другие вопросы по тегам