✨Validation - Ki-Kobayashi/flutter_wiki GitHub Wiki
import 'package:email_validator/email_validator.dart';
import 'package:sprintf/sprintf.dart';
class FormValidation {
/// 表示名バリデーション
static String? nickNameValidator(String? value) {
if (isNoInput(value)) {
return sprintf(
StringConsts.errTextEmplty, [StringConsts.labelNickName]);
}
// 1字以上、8字以下の文字列(?,=,+,*,\,(,{,[ は使用不可)
final regexLength = RegExp(r'^.{1,20}$');
final regexSimbol = RegExp(r'^[^\?=\+\*\\({\[]+$');
if (!regexLength.hasMatch(value!)) {
return StringConsts.errTextNickNameLength;
}
if (!regexSimbol.hasMatch(value)) {
return StringConsts.errTextForbiddenSimbols;
}
return null;
}
/// メールアドレスバリデーション
static String? mailAddressValidator({
required String? email,
}) {
if (isNoInput(email)) {
return sprintf(
StringConsts.errTextEmplty, [StringConsts.labelMail]);
}
// メールアドレスが有効か
if (!EmailValidator.validate(email!)) {
return StringConsts.errTextMailAddress;
}
return null;
}
/// バリデーション:パスワード
static String? passwordValidator({
required String? password,
}) {
if (password == null || password.isEmpty) {
return sprintf(
StringConsts.errTextEmplty, [StringConsts.labelPassword]);
}
// 8文字以上36文字以内か(32字でも良さそう)
final regexPwLength = RegExp(r'^.{8,36}$');
if (!regexPwLength.hasMatch(password)) {
return StringConsts.errTextPasswordLength;
}
final errList = <String>[];
// 半角英数字・指定記号以外が含まれて"いない"か
final regexPw =
RegExp(r'''^[a-zA-Z\d@\[\]\\;:,\./_!"'#$%&\(\)=~|`+*{}<>?\-^]+$''');
if (!regexPw.hasMatch(password)) {
errList.add(StringConsts.errTextPasswordForbidden);
}
// 半角数字(1文字以上)が含まれているか
final regexPwNumber = RegExp(r'\d');
if (!regexPwNumber.hasMatch(password)) {
errList.add(StringConsts.errTextPasswordNumber);
}
// 半角英字(1文字以上)が含まれているか
final regexPwAlphabet = RegExp(r'[a-zA-Z]');
if (!regexPwAlphabet.hasMatch(password)) {
errList.add(StringConsts.errTextPasswordAlphabet);
}
// 指定半角記号(1文字以上)が含まれているか
final regexPwSymbols =
RegExp(r'''[@\[\]\\;:,\./_!"'#$%&\(\)=~|`+*{}<>?\-^]''');
if (!regexPwSymbols.hasMatch(password)) {
errList.add(StringConsts.errTextPasswordSymbol);
}
if (errList.isNotEmpty) {
return errList.join('\n');
}
return null;
}
/// バリデーション:ログイン用パスワード
static String? passwordValidatorForLogin({
required String? password,
}) {
if (isNoInput(password)) {
return sprintf(
StringConsts.errTextEmplty, [StringConsts.labelPassword]);
}
return null;
}
/// 未入力かどうか
static bool isNoInput(String? value) =>
value == null || value.trim().isEmpty ? true : false;
}
.
.
.
.
.
.
.
.
.