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

За любовь к Богу я не получаю этот простой код! Он всегда предупреждает "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);    

}

Ответ 1

Если вы определяете свое регулярное выражение как строку, тогда все обратные косые черты должны быть экранированы, поэтому вместо '\ 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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

Иногда на большинстве страниц регистрации и входа в систему необходимо проверить электронную почту. В этом примере вы узнаете простую проверку электронной почты. Сначала возьмите текстовый ввод в 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();'/>

Ответ 7

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

Ответ 8

с более простым

Вот он:

var regexEmail = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
var email = document.getElementById("txtEmail");

if (regexEmail.test(email.value)) {
    alert("It Okay")
} else {
    alert("Not Okay")

}

удачи.

Ответ 9

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

Почему?

  • Проверка синтаксиса (согласно RFC 822).
  • Проверка IANA 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, то валидацию следует рассматривать как успех.

Ответ 10

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

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

Ответ 12

Немного поздно на вечеринку, но здесь ничего не получается...

function isEmailValid(emailAdress) {
    var EMAIL_REGEXP = new RegExp('^[a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,15})$', 'i');
    return EMAIL_REGEXP.test(emailAdress)
}

http://jsfiddle.net/yrshaikh/xvd6H/

Ответ 13

Простая, но мощная проверка подлинности электронной почты для проверки синтаксиса электронной почты:

var EmailId = document.getElementById('Email').value;
var emailfilter = /^[\w._-]+[+]?[\w._-][email protected][\w.-]+\.[a-zA-Z]{2,6}$/;
if((EmailId != "") && (!(emailfilter.test(EmailId ) ) )) {
    msg+= "Enter the valid email address!<br />";
}

Ответ 14

Лучше всего использовать:

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

Это разрешает такие области, как: whatever.info (4 буквы в конце)

Также, чтобы проверить, используя

pattern.test("[email protected]")

возвращает true, если он работает

http://www.w3schools.com/js/js_obj_regexp.asp

Ответ 15

Вы должны помнить, что a-z, A-Z, 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][-a-z\.]\.[a-z\.]{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

Ответ 16

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

Ответ 17

Вы можете добавить функцию к объекту 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 !
}