checkEasyPwd function

bool checkEasyPwd(
  1. String input,
  2. String phone
)

Implementation

bool checkEasyPwd(String input, String phone) {
  //1:不能出现连续的字母或者数字
  var allMatchLength = input.length - 1; // 匹配全部
  var preMatchLength = input.length - 2; // 匹配N-1位
  RegExp allSameChar = RegExp("([0-9a-zA-Z])\\1{$allMatchLength}"); // 匹配全为连续字符
  RegExp preSameChar =
      RegExp("([0-9a-zA-Z])\\1{$preMatchLength}"); // 匹配n-1位位连续字符
  //2:不能出现顺子(123456或654321一类) 连续的数字
  // allSuccessiveNum 顺子
  // startCharSuccessiveNum  第一位字母  后面顺子
  // endCharSuccessiveNum    最后一位字母  前面顺子
  RegExp allSuccessiveNum = RegExp(
      "(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){$allMatchLength}\\d|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){$allMatchLength}\\d");
  RegExp startCharSuccessiveNum = RegExp(
      "[A-Za-z](?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){$preMatchLength}\\d|[A-Za-z](?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){$preMatchLength}\\d");
  RegExp endCharSuccessiveNum = RegExp(
      "((?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){$preMatchLength}\\d)[A-Za-z]|((?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){$preMatchLength}\\d)[A-Za-z]");

  // print('----- allSameChar: $allSameChar');
  // print('----- preSameChar: $preSameChar');
  // print('----- allSuccessiveNum: $allSuccessiveNum');
  // print('----- startCharSuccessiveNum: $startCharSuccessiveNum');
  // print('----- endCharSuccessiveNum: $endCharSuccessiveNum');
  // print('----- allSameChar: $input ${allSameChar.hasMatch(input)}');
  // print('----- preSameChar: $input ${preSameChar.hasMatch(input)}');
  // print('----- allSuccessiveNum: $input ${allSuccessiveNum.hasMatch(input)}');
  // print('----- startCharSuccessiveNum: $input ${startCharSuccessiveNum.hasMatch(input)}');
  // print('----- endCharSuccessiveNum: $input ${endCharSuccessiveNum.hasMatch(input)}');
  return allSameChar.hasMatch(input) ||
      preSameChar.hasMatch(input) ||
      allSuccessiveNum.hasMatch(input) ||
      startCharSuccessiveNum.hasMatch(input) ||
      endCharSuccessiveNum.hasMatch(input) ||
      phone.contains(input);
}