【问题标题】:How to validate email after @ in flutter?如何在@@之后验证电子邮件?
【发布时间】:2022-08-05 15:33:27
【问题描述】:

如何在电子邮件地址中 @ 之后验证电子邮件?如果用户仅输入 \"username@\",我需要显示错误。

String emailValidator(String email, BuildContext context) {
  if (email == null || email.length == 0) {
    return AppLocalizations.of(context).translate(\'validators.requiredField\');
  }

  if (email == null || !email.contains(\"@\")) {
    return AppLocalizations.of(context).translate(\'validators.invalidEmail\');
  }

  return null;
}

标签: flutter dart


【解决方案1】:

我认为正则表达式将是最好的选择。为这个简单的任务添加一个包对我来说似乎太多了。

这个问题已经回答了很多次here

表达方式:

bool emailValid = RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(email);

【讨论】:

    【解决方案2】:

    您可以使用正则表达式

    在 String 上创建扩展

    extension RegexExt on String {
      bool validateEmail() => RegExp(
              r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
          .hasMatch(this);
    }
    
    

    用法

    String emailValidator(String email, BuildContext context) {
      if (email == null || email.length == 0) {
        return AppLocalizations.of(context).translate('validators.requiredField');
      }
    
      return email.validateEmail() ? null : AppLocalizations.of(context).translate('validators.invalidEmail'); 
    }
    

    【讨论】:

      【解决方案3】:

      使用flutter的email_validator包

                     Form(
                          autovalidateMode:AutovalidateMode.always,
                          child:TextFormField(
                            keyboardType: TextInputType.emailAddress,
                            validator: (value)=>EmailValidator.validate(value!) ? null : "Please enter a valid email",
                            controller: emailController,
                          ),
                        )
              
      

      email_validator 将电子邮件作为输入,如果电子邮件是 validate 或 false,则返回 true 我已将其与 textfield 一起使用,您也可以尝试

      String email = 'username@gail.com';
      bool isValid = EmailValidator.validate(email);
      
      print('Email is valid? ' + (isValid ? 'yes' : 'no'));
      

      【讨论】:

        猜你喜欢
        • 2015-05-30
        • 2019-10-18
        • 1970-01-01
        • 2020-05-29
        • 2021-11-21
        • 2020-10-20
        • 1970-01-01
        • 2020-09-30
        • 2019-07-02
        相关资源
        最近更新 更多