Реагировать на подтверждение по электронной почте без регулярных выражений - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу проверить адрес электронной почты в реагирующем родном TextInput, но без использования регулярных выражений. Я хочу проверить это родным способом, как в html, где мы можем сделать это, определив input type = "email".

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Я предлагаю взглянуть на библиотеки, такие как validate. js.

Полностью нативный способ, такой как <input type="email>", недоступен в React Native. Regex действительно проблематичен c для адресов электронной почты, поскольку таких случаев невероятно много, и любые регулярные выражения с большой вероятностью вызовут ложные срабатывания или наоборот. Официальное регулярное выражение RFC822 крайне неясное и медленное. Хорошие библиотеки проверки используют парсеры BNF, чтобы сделать этот процесс более эффективным.

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

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

0 голосов
/ 27 апреля 2020

Вы можете использовать регулярное выражение, например:

validate = (text) => {
  console.log(text);
  let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
  if (reg.test(text) === false) {
    console.log("Email is Not Correct");
    this.setState({ email: text })
    return false;
  }
  else {
    this.setState({ email: text })
    console.log("Email is Correct");
  }
}

, которое довольно просто понять

, или взять дополнительную библиотеку для проверки, например:

react-native-form-validator - например

есть ли причина, по которой вы не хотите использовать регулярные выражения?

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