соответствие регулярных выражений javascript переменной домена электронной почты - PullRequest
1 голос
/ 04 марта 2012

Я пытаюсь выполнить проверку на стороне клиента, если введено значение:

  • является действительным адресом электронной почты
  • имеет правильное доменное имя

Я придумал следующий код, но он не работает:

var userinput = 'dirk@something.com';
var domain = 'somethingelse.com';
domain.replace('.', '\.');
var pattern = new RegExp('/^[a-zA-Z0-9._-]+@'+domain+'$/');
if(!pattern.test(userinput))
 {
 alert('not a valid e-mailadres, or the wrong domain!');
 }

Кто-нибудь, кто может мне помочь? Большое спасибо!

Ответы [ 4 ]

3 голосов
/ 04 марта 2012

Использование функции split () ,

emailID.split("@")[1]
1 голос
/ 04 марта 2012

Как насчет того, чтобы сделать это в два этапа. Во-первых, используйте регулярное выражение, которое Джеймс рекомендует проверить на действительный (ish) адрес электронной почты. Во-вторых, убедитесь, что домен соответствует разрешенному домену, как предлагает Siva.

var userinput = 'dirk@something.com';
var domain = 'somethingelse.com';

var pattern = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i
if(!pattern.test(userinput) || userinput.split('@')[1] != domain)
{
  alert('not a valid e-mailadres, or the wrong domain!');
}​

Вы можете поиграть с ним здесь

1 голос
/ 04 марта 2012

Аргумент для new RegExp() либо в /regex here/, либо в кавычках "regex here", но НЕ в обоих.Форма косой черты генерирует регулярное выражение само по себе без необходимости new RegExp(), поэтому обычно она используется только сама по себе, а строка в кавычках используется с new RegExp().

var pattern = new RegExp('^[a-zA-Z0-9._-]+@' + domain + '$');

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

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

var userinput = 'dirk@something.com';
var domain = 'somethingelse.com';
var testValue = "@" + domain.toLowerCase();
if (userinput.substr(userinput.length - testValue.length).toLowerCase() != testValue) {
    // incorrect domain
}
1 голос
/ 04 марта 2012

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

Проверьте эту ссылку для проверки электронной почты: http://www.regular -expressions.info / email.html

с этого момента вы можете ограничить регулярное выражение и проверить действительный домен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...