在此代码中,空电子邮件验证工作,但电子邮件类型验证不起作用。如果插入有效的电子邮件地址,电子邮件类型验证仍然显示“无效电子邮件”消息。
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,}))$'))发布于 2020-01-08 14:01:58
您可以使用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 of String,可以将RegExp对象作为参数传递。
if (!(value.contains(regex)))
return "Invalid Email";发布于 2020-10-19 08:50:17
您可以使用来自pub.dev的pub.dev包来验证您的电子邮件地址。
将依赖项添加到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';
}
},
),
)发布于 2021-08-05 13:30:07
您可以简单地使用这个RegExp
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";
}
},https://stackoverflow.com/questions/59646163
复制相似问题