Проверка электронной почты не работает в отображении флаттера, даже если адрес электронной почты правильный - PullRequest
0 голосов
/ 08 января 2020

В этом коде проверка пустого адреса электронной почты работает, но проверка типа электронного письма не работает. При проверке типа электронной почты по-прежнему отображается сообщение «Invalid Email», если введен действительный адрес электронной почты.

new TextFormField(
      decoration: new InputDecoration(
        labelText: 'Email'
      ),
      validator: (value){
        if (value.isEmpty) {
          return 'Email is required';
        }
        if(!value.contains(r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[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,}))$')){
          return 'Invalid Email';
        }
        return null;
      },
    )

Потенциально ошибочная строка:

if(!value.contains(r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[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,}))$'))

1 Ответ

1 голос
/ 08 января 2020

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

Попробуйте это

   Pattern pattern = r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[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,}))$';
   RegExp regex = new RegExp(pattern);
   if (!(regex.hasMatch(value)))
      return "Invalid Email";

Если вы хотите использовать .contains из String, вы можете передать RegExp объект в качестве аргумента

if (!(value.contains(regex)))
     return "Invalid Email";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...