我想在Flutter Validator中創建一個驗證規則。作為參考,我想在 LaravelmixedCase()中創建像and函式這樣的驗證器函式numbers()
大致解釋一下,像這樣
- 最少 8 個字符
- 大寫 (A) 和小寫 (a) 字母的混合
- 必須至少有 1 個數字
例子
Passwords1 = true;
passwords1 = false;
passwordss = false;
這個怎么做,可以嗎?
我現在只知道幾個條件if-else:
if (value == null || value.isEmpty)
if (value.length < 8)
我還閱讀了一些類似這里的參考資料,但我不明白(例如)的模式String patttern = r'(^(?:[ 0]9)?[0-9]{10,12}$)';
我可以將上面想要的規則寫入這樣的if-else代碼塊嗎?
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please fill the confirm password field';
} else if (value != passwordController.text) {
return 'Password doesn\'t match';
}
return null;
}
請幫忙或建議,謝謝
uj5u.com熱心網友回復:
是的,你可以用if-else它來做,但有一個小技巧,我已經做到了,這是我的代碼:
// Create an enum containing warning information, you can modify your warning here
enum PasswordError {
upperCase('Must contain at least one uppercase'),
lowerCase('Must contain at least one lowercase'),
digit('Must contain at least one digit'),
eigthCharacter('Must be at least 8 characters in length'),
specialCharacter('Contain at least one special character: !@#\\\$&*~');
final String message;
const PasswordError(this.message);
}
// Validate and return all errors as a List
//
// Here are the patterns and what it means:
// r'^
// (?=.*?[A-Z]) // should contain at least one upper case
// (?=.*?[a-z]) // should contain at least one lower case
// (?=.*?[0-9]) // should contain at least one digit
// (?=.*?[!@#\$&*~]) // should contain at least one Special character
// .{8,} // Must be at least 8 characters in length
// $
//
// Source: https://stackoverflow.com/questions/56253787/how-to-handle-textfield-validation-in-password-in-flutter
List<PasswordError> passwordValidator(String password) {
List<PasswordError> errors = [];
if (!RegExp(r'[A-Z]').hasMatch(password)) {
errors.add(PasswordError.upperCase);
}
if (!RegExp(r'[a-z]').hasMatch(password)) {
errors.add(PasswordError.lowerCase);
}
if (!RegExp(r'[0-9]').hasMatch(password)) {
errors.add(PasswordError.digit);
}
if (!RegExp(r'[!@#\$&*~]').hasMatch(password)) {
errors.add(PasswordError.specialCharacter);
}
if (!RegExp(r'.{8,}').hasMatch(password)) {
errors.add(PasswordError.eigthCharacter);
}
return errors;
}
然后你可以將它用于驗證器:
validator: (password) {
if (password != null) {
// Get all errors
final validators = passwordValidator(password);
// Returns null if password is valid
if (validators.isEmpty) return null;
// Join all errors that start with "-"
return validators
.map((e) => '- ${e.message}')
.join('\n');
}
return null;
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/516540.html
標籤:扑镖验证
上一篇:SSIS中構造的URI中的非法字符在C#中使用BouncyCastle進行PGP加密
下一篇:如何驗證來自檔案流的錯誤輸入?
