javascript регулярные - Проверка правильности регулярного выражения JavaScript




9 Answers

Если вы определяете свое регулярное выражение как строку, все обратные косые черты должны быть экранированы, поэтому вместо «\ w» вы должны иметь «\\ w».

Альтернативно, определите его как регулярное выражение:

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

BTW, пожалуйста, не проверяйте адреса электронной почты на стороне клиента. Ваше регулярное выражение слишком просто, чтобы пройти для прочной реализации.

См. Настоящую статью здесь: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

примеры шпаргалка

Этот код всегда предупреждает "null" , что означает, что строка не соответствует выражению.

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

function isEmailAddress(str) {

    str = "[email protected]";      

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

}



Я использовал эту функцию некоторое время. он возвращает логическое значение.

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



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



Иногда на большинстве страниц регистрации и входа в систему необходимо проверить электронную почту. В этом примере вы узнаете простую проверку электронной почты. Сначала возьмите текстовый ввод в html и ввод кнопки, подобный этому

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

<script>
    function checkEmail() {
        var email = document.getElementById('txtEmail');
        var filter = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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>

вы также можете проверить это регулярное выражение

<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>

Проверьте этот демонстрационный вывод, который вы можете проверить здесь.

function checkEmail() {
        var email = document.getElementById('txtEmail');
        var filter = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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();'/>

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

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

надеюсь, это поможет вам




Проверка электронной почты легко ошибиться. Поэтому я рекомендую вам использовать Verimail.js .

Зачем?

  • Проверка синтаксиса (согласно RFC 822).
  • Проверка IANA TLD
  • Предложение правописания для наиболее распространенных доменов TLD и электронной почты
  • Запретить временные домены электронной почты, такие как mailinator.com
  • Поддержка плагина jQuery

Еще одна замечательная вещь с Verimail.js заключается в том, что у нее есть орфографическое предложение для наиболее распространенных доменов электронной почты и зарегистрированных TLD. Это может значительно снизить показатель отказов для пользователей, которые ошибочно используют общие имена доменов, такие как gmail.com, hotmail.com, aol.com, aso ..

Пример:

Как это использовать?

Самый простой способ - загрузить и включить на странице страницу verimail.jquery.js . После этого подключите Verimail, запустив следующую функцию в поле ввода, которое требует проверки:

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

Элемент сообщения является необязательным элементом, который отображает сообщение, например «Недопустимый адрес электронной почты ..» или «Вы имели в виду [email protected]?». Если у вас есть форма и вы хотите продолжить, только если подтверждение электронной почты, вы можете использовать функцию getVerimailStatus, как показано ниже:

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

Функция getVerimailStatus возвращает целочисленный код в соответствии с объектом Comfirm.AlphaMail.Verimail.Status. Как показано выше, если статус представляет собой отрицательное целочисленное значение, тогда проверка должна рассматриваться как сбой. Но если значение больше или равно 0, то валидацию следует рассматривать как успех.




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

var pattern = /^[A-Za-z0-9._%+-][email protected]([A-Za-z0-9-]+\.)+([A-Za-z0-9]{2,4}|museum)$/;



var emailRegex = /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([\.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\.[A-Z0-9-]+)+$/i;
if(emailRegex.test('yoursamplemail'))
alert('valid');
else
alert('invalid');



Вы должны иметь в виду, что az, AZ, 0-9,., _ И - не являются единственными допустимыми символами в начале адреса электронной почты.

Например, Gmail позволяет помещать знак «+» в адрес, чтобы «подделать» другой адрес электронной почты (например, [email protected] также отправит электронное письмо на адрес [email protected]).

micky.o'[email protected] не оценил бы ваш код, останавливая их ввод своего адреса ... апострофы отлично действуют в адресах электронной почты.

Закрытие «проверки» действительного адреса электронной почты, упомянутого выше, является, как он сам утверждает, весьма наивным:

http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/format/emailaddress.js#198

Я рекомендую быть очень открытым в вашем клиентском коде, а затем гораздо более тяжеловесным, например, отправлять электронную почту со ссылкой, чтобы действительно проверить, что она «действительна» (как в синтаксически действительной для своего провайдера, так и не с ошибкой).

Что-то вроде этого:

var pattern = /[^@][email protected][-az\.]\.[az\.]{2,6}/

Принимая во внимание, что теоретически вы можете иметь два знака @ в адресе электронной почты, и я даже не включил символы за пределами latin1 в именах доменов!

http://www.eurid.eu/en/eu-domain-names/idns-eu

http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx




Вы можете добавить функцию к объекту String

//Add this wherever you like in your javascript code
String.prototype.isEmail = function() {
    return !!this.match(/^\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,3}$/);
}

var user_email = "[email protected]";

if(user_email.isEmail()) {
    //Email is valid !
} else {
    //Email is invalid !
}



Related

javascript regex