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




примеры шпаргалка (15)

Проверка электронной почты легко ошибиться. Поэтому я рекомендую вам использовать 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, то валидацию следует рассматривать как успех.

Этот код всегда предупреждает "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;
}

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

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 />";
}

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


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

Вот :

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

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

}

удачи.



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

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/


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

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

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

Это позволяет домены, такие как: whatever.info (4 буквы в конце)

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

pattern.test("[email protected]")

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

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


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

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

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

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


Вы должны иметь в виду, что 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


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


Правильная проверка адреса электронной почты в соответствии с RFC не является чем-то, что может быть достигнуто с помощью однострочного регулярного выражения. Статья с лучшим решением, которое я нашел в PHP, - это действительный адрес электронной почты? , Очевидно, что он был перенесен на Java. Я думаю, что эта функция слишком сложна, чтобы ее можно было портировать и использовать в JavaScript. Порт JavaScript / node.js: https://www.npmjs.com/package/email-addresses .

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

Вот функция JavaScript, которую я использую, чтобы проверить, выглядит ли строка как действительный почтовый адрес:

function looksLikeMail(str) {
    var lastAtPos = str.lastIndexOf('@');
    var lastDotPos = str.lastIndexOf('.');
    return (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2);
}

Объяснение:

  • lastAtPos < lastDotPos : Последний @ должен быть до последнего . поскольку @ не может быть частью имени сервера (насколько я знаю).

  • lastAtPos > 0 : Должно быть что-то (имя пользователя электронной почты) до последнего @ .

  • str.indexOf('@@') == -1 : В адресе не должно быть @@ . Даже если @ отображается как последний символ в имени пользователя электронной почты, он должен быть указан таким образом " будет между этим @ и последним @ в адресе.

  • lastDotPos > 2 : перед последней точкой должно быть не менее трех символов, например [email protected] .

  • (str.length - lastDotPos) > 2 : После последней точки должно быть достаточно символов, чтобы сформировать двухсимвольный домен. Я не уверен, нужны ли скобки.







javascript regex