如何检查字符串是否同时包含大写和小写字符



我需要验证用户输入的密码,并检查密码是否在Dart中至少包含一个大写和一个小写字符。

我写了这个字符串扩展:

extension StringValidators on String {
bool containsUppercase() {
// What code should be here?
}
bool containsLowercase() {
// What code should be here?
}
}

并像这样使用:

final text = passwordTextController.text;
final isValid = text.containsUppercase() && text.containsLowercase();

有没有用于此目的的正则表达式?或者应该是简单的算法?请帮我找出优雅的方式。谢谢

  • 最小值1大写
  • 最小1个小写字母
  • 最小1个数字
  • 最少1个特殊字符
  • 通用允许字符(!@#$&*~(
bool validateStructure(String value){
String  pattern = r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#$&*~]).{8,}$';
RegExp regExp = new RegExp(pattern);
return regExp.hasMatch(value);
}
extension StringValidators on String {
bool get containsUppercase => contains(RegExp(r'[A-Z]'));
bool get containsLowercase => contains(RegExp(r'[a-z]'));
}

对于仅最小1个上限和最小1个下限,您可以使用此RegEx:

RegExp regEx = new RegExp(r"(?=.*[a-z])(?=.*[A-Z])w+");
String a = "aBc";
String b = "abc";
String c = "ABC";
print("a => " + regEx.hasMatch(a).toString());
print("b => " + regEx.hasMatch(b).toString());
print("c => " + regEx.hasMatch(c).toString());

预期结果:

I/flutter (10220): a => true
I/flutter (10220): b => false
I/flutter (10220): c => false

可重复使用

extension StringValidators on String {
meetsPasswordRequirements() {
RegExp regEx = new RegExp(r"(?=.*[a-z])(?=.*[A-Z])w+");
return regEx.hasMatch(this);
}
}

使用

final isValid = text.meetsPasswordRequirements();
void main() {
solve("coDE");
}
String solve(String s) {
// your code here
List _a = s.split("");
String _b = "";
List _x = [];
List _y = [];
for(var i in _a){
if(i.toString() == i.toString().toUpperCase()){
_x.add(i);
}else{
_y.add(i);
}
}

if(_x.length == _y.length){
_b = _a.join().toLowerCase();
}else if(_x.length > _y.length){
_b = _a.join().toUpperCase();
}else if(_x.length < _y.length){
_b = _a.join().toLowerCase();
}
return "$_b";
}
OR 
String solve2(String str) {
return RegExp(r'[A-Z]').allMatches(str).length >
RegExp(r'[a-z]').allMatches(str).length
? str.toUpperCase()
: str.toLowerCase();
}

相关内容

  • 没有找到相关文章

最新更新