【问题标题】:Email validation not working in flutter display message even if email address is correct即使电子邮件地址正确,电子邮件验证也无法在颤动显示消息中工作
【发布时间】:2020-04-26 00:10:39
【问题描述】:

在此代码中,空电子邮件验证有效,但电子邮件类型验证无效。如果插入了有效的电子邮件地址,电子邮件类型验证仍会显示“无效电子邮件”消息。

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,}))$'))

【问题讨论】:

  • 添加了相关标签,因为这是一个电子邮件验证问题。
  • 与临时电子邮件正则表达式一样,您的将拒绝许多有效的电子邮件地址,并接受许多无效的电子邮件地址。不要自己动手。

标签: regex validation email flutter


【解决方案1】:

您可以使用RegExphasMatch方法匹配正则表达式

试试这个

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

如果你想使用String 中的.contains,你可以传递一个RegExp 对象作为参数

if (!(value.contains(regex)))
     return "Invalid Email";

【讨论】:

    【解决方案2】:

    您可以使用来自pub.devemail_validator 包来验证您的电子邮件地址。

    将依赖项添加到您的 pubspec.yaml 文件中

    dependencies:
       email_validator: ^1.0.6
    

    email_validator 导入.dart 文件

    import 'package:email_validator/email_validator.dart';
    

    检查表单验证

            Form(
                  autovalidate: true,
                   child :  TextFormField(
                        keyboardType: TextInputType.emailAddress,
                        decoration: InputDecoration(
                          hintText: ("email"),
                        ),
                        validator: (value) {
                          if (!EmailValidator.validate(value)) {
                            return 'Please enter a valid email';
                          }
                        },
                      ),
                    )
    

    【讨论】:

      【解决方案3】:

      你可以简单地使用这个正则表达式

      validator: (input){
                                 bool emailValid = RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(input ?? "");
                                  if(emailValid == true)
                                  {
                                    return null;
                                  }
                                  else
                                  {
                                    return "Email id should be valid";
                                  }
                                 
                                 },
      

      【讨论】:

        【解决方案4】:

        你可以用这个:

         validator: (val) {
                                if (RegExp(
                                      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,}))$',
                                    ).hasMatch(val) &&
                                    !emailExists) {
                                  return null;
                                } else {
                                  if (emailExists == true) {
                                    return "Email already exists, please sign in";
                                  } else {
                                    return "Please provide a valid email";
                                  }
                                }
                              },
        

        对于 emailExists,添加这一行:

        bool emailExists = false;
        

        【讨论】:

          猜你喜欢
          • 2012-04-08
          • 2014-06-12
          • 1970-01-01
          • 1970-01-01
          • 2023-03-06
          • 1970-01-01
          • 2020-11-24
          • 2015-04-24
          • 2018-03-13
          相关资源
          最近更新 更多