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}+
- Там же.$
конец строки.