Как проверить адрес электронной почты с помощью регулярного выражения и CSML - PullRequest
0 голосов
/ 06 августа 2020

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

Вот мой текущий код:

askEmail:
say "Thank you {{firstname}}"
say "What is your email address?"
hold
remember email = event
if (Find("@", in="email")) goto askCompany
else {
say "Please enter a real email address"
goto askEmail
}

Мне нужно заменить Find функцией с использованием регулярного выражения и проверить все неожиданные символы .

Ответы [ 3 ]

2 голосов
/ 09 августа 2020

В CSML есть строковый метод contains_regex , который можно использовать для проверки более сложных правил, чем просто «есть ли в этой строке @?».

Это довольно сложно чтобы охватить все возможные действительные адреса электронной почты с помощью регулярного выражения (см. https://emailregex.com), но давайте просто согласимся с вашей целью, что электронные письма имеют общую форму "whatever@whatever.whatever", где "whatever" - любая строка, которая не содержать разрыв строки.

Очевидно, что это не 100% надежное регулярное выражение, поскольку оно немного наивно, но проверка электронных писем по-прежнему является Hard Thing ® . Достаточно хорошо обычно достаточно хорошо.

Вот:

askEmail:
  say "Thank you {{firstname}}"
  say "What is your email address?"
  hold
  remember email = event
  if (email.contains_regex("^.+@.+\..+$")) goto askCompany
  else {
    say "Please enter a real email address"
    goto askEmail
  }

Очевидно, вы можете настроить регулярное выражение по своему вкусу!

2 голосов
/ 07 августа 2020

emailPattern = /^([a-z\d]{1})([\w-\.!#$%&'*+\/=?\^`\{\|\}~"\(\),:;<>\[\\\]]){2,}([a-z\d]{1})@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-z\-0-9]+\.)+[a-z]{2,}))$/i;

console.log('Regex test is: ', emailPattern.test('test@test.test'));
emailPattern = /^([a-z\d]{1})([\w-\.!#$%&'*+\/=?\^`\{\|\}~"\(\),:;<>\[\\\]]){2,}([a-z\d]{1})@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-z\-0-9]+\.)+[a-z]{2,}))$/i;
0 голосов
/ 07 августа 2020

Шаблон регулярного выражения электронной почты

^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)* @[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
...