【问题标题】:Driver's License Verification in Flutter / DartFlutter/Dart 中的驾照验证
【发布时间】:2019-05-06 07:51:42
【问题描述】:

有谁知道可以在颤振项目中使用的 API 或包,可以让我检查驾驶执照号码是否有效?如果这有影响,我正在使用美国驾照。

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    似乎还没有插件,但由于它可以在大多数语言中以几乎相同的方式完成,所以它已经完成了。看一看:https://stackoverflow.com/a/29835561/6696558.

    在 Dart 中是这样的:

    class DriverLicenseValidator {
      // From http://www.uiia.org/documents/license_guidelines_08.pdf
      static final oneToSevenNumeric = RegExp(r'^[0-9]{1,7}$');
      static final oneAlpha = RegExp(r'(.*[A-Za-z]){1}');
      static final oneAlphaPlusSeven = RegExp(r'^.[0-9]{7}$');
      static final twoAlpha = RegExp(r'(.*[A-Za-z]){2}');
      static final alphaPlusSixNumeric = RegExp(r'(.*[0-9]){6}$');
      static final threeToFiveNumeric = RegExp(r'(.*[0-9]){3,5}$');
      static final fiveToNineNumeric = RegExp(r'(.*[0-9]){5,9}');
      static final sixNumeric = RegExp(r'^[0-9]{6}$');
      static final sevenNumeric = RegExp(r'^[0-9]{7}$');
      static final sevenToNineNumeric = RegExp(r'^[0-9]{7,9}$');
      static final eightAreNumbers = RegExp(r'(.*[0-9]){8}');
      static final nineNumeric = RegExp(r'^[0-9]{9}$');
      static final nineAlphaChars = RegExp(r'^[A-Za-z0-9]{9}$');
      static final tenNumeric = RegExp(r'^[0-9]{10}$');
      static final elevenNumeric = RegExp(r'^.[0-9]{11}$');
      static final twelveNumeric = RegExp(r'^.[0-9]{12}$');
      static final hPlusEight = RegExp(r'([H][0-9]{8})$');
      static final sevenPlusX = RegExp(r'([H][0-9]{7}X)$');
    
      /// If there's no error, returns an empty [String]
      /// If there's an error, returns an error [String]
      static String checkForError(String stateCode, String licenseNumber) {
        if (stateCode == null || licenseNumber == null) {
          return "";
        }
    
        if (stateCode == 'AK') {
          return _validateExpression(oneToSevenNumeric, licenseNumber, "Must be 1-7 numeric");
        }
    
        if (stateCode == 'AL') {
          return _validateExpression(sevenNumeric, licenseNumber, "Must be 7 numeric");
        }
    
        if (stateCode == 'AR' || stateCode == 'MS') {
          return _validateExpression(nineNumeric, licenseNumber, "Must be 9 numeric");
        }
    
        if (stateCode == 'AZ') {
          if (nineNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          if (oneAlpha.hasMatch(licenseNumber) && eightAreNumbers.hasMatch(licenseNumber)) {
            return "";
          }
    
          if (twoAlpha.hasMatch(licenseNumber) &&
              threeToFiveNumeric.hasMatch(licenseNumber) &&
              licenseNumber.length < 8) {
            return "";
          }
    
          return "Must be 1 Alphabetic, 8 Numeric; or 2 Alphabetic, 3-6 Numeric; or 9 Numeric";
        }
    
        if (stateCode == 'CA') {
          if (oneAlpha.hasMatch(licenseNumber) && oneAlphaPlusSeven.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 1 alpha and 7 numeric";
        }
    
        if (stateCode == 'CO' || stateCode == 'CN' || stateCode == 'CT') {
          return _validateExpression(nineNumeric, licenseNumber, "Must be 9 numeric");
        }
    
        if (stateCode == 'DC') {
          if (sevenNumeric.hasMatch(licenseNumber) || nineNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 7 - 9 numeric";
        }
    
        if (stateCode == 'DE') {
          if (oneToSevenNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 1 - 7 numeric";
        }
    
        if (stateCode == 'FL') {
          if (oneAlpha.hasMatch(licenseNumber) && twelveNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 1 alpha, 12 numeric";
        }
    
        if (stateCode == 'GA') {
          if (sevenToNineNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 7 - 9 numeric";
        }
    
        if (stateCode == 'HI') {
          if (nineNumeric.hasMatch(licenseNumber) || hPlusEight.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must 'H' + 8 numeric; 9 numeric";
        }
    
        if (stateCode == 'ID') {
          if (nineNumeric.hasMatch(licenseNumber) ||
              sixNumeric.hasMatch(licenseNumber) ||
              (twoAlpha.hasMatch(licenseNumber) && alphaPlusSixNumeric.hasMatch(licenseNumber))) {
            return "";
          }
    
          return "Must 9 numbers or 6 numbers; or 2 char, 6 numbers ";
        }
    
        if (stateCode == 'IL') {
          if (oneAlpha.hasMatch(licenseNumber) && elevenNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must 1 character 11 numbers";
        }
    
        if (stateCode == 'IN') {
          if (tenNumeric.hasMatch(licenseNumber) || nineNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 9-10 numbers";
        }
    
        if (stateCode == 'IA') {
          if (nineAlphaChars.hasMatch(licenseNumber) || nineNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 9 alpha numbers";
        }
    
        if (stateCode == 'KS' || stateCode == 'KY') {
          if (nineNumeric.hasMatch(licenseNumber) ||
              (oneAlpha.hasMatch(licenseNumber) &&
                  eightAreNumbers.hasMatch(licenseNumber) &&
                  licenseNumber.length == 9)) {
            return "";
          }
    
          return "Must be 1 alpha and 8 numeric";
        }
    
        if (stateCode == 'LA') {
          if (nineNumeric.hasMatch(licenseNumber) == true) {
            return "";
          }
    
          return "Must be 9 numeric";
        }
    
        if (stateCode == 'ME') {
          if (sevenNumeric.hasMatch(licenseNumber) || sevenPlusX.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 7 numeric";
        }
    
        if (stateCode == 'MD' || stateCode == 'MI' || stateCode == 'MN') {
          if (oneAlpha.hasMatch(licenseNumber) && twelveNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "1 Alphabetic, 12 Numeric";
        }
    
        if (stateCode == 'MA') {
          if ((oneAlpha.hasMatch(licenseNumber) &&
                  eightAreNumbers.hasMatch(licenseNumber) &&
                  licenseNumber.length == 9) ||
              nineNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "Must be 1 alpha, 8 numeric; 9 numeric";
        }
    
        if (stateCode == 'MO') {
          if ((oneAlpha.hasMatch(licenseNumber) &&
                  fiveToNineNumeric.hasMatch(licenseNumber) &&
                  licenseNumber.length < 11) ||
              nineNumeric.hasMatch(licenseNumber)) {
            return "";
          }
    
          return "1 alpha - 5-9 Numeric or 9 numeric";
        }
    
        return "Invalid state code";
      }
    
      static String _validateExpression(RegExp expression, String value, String error) =>
          expression.hasMatch(value) ? "" : error;
    }
    
    

    【讨论】:

    • 这是非常有用的代码,用于检查输入的驾驶执照的结构,但我指的是一个 API 或包,可用于检查驾驶执照号码是否真实并验证用户的身份。我接受了这个作为答案,因为我的问题很简短,不清楚我所说的验证是什么意思。
    • 我正在 Flutter 中搜索 USDL pdf417 条码原始数据解码选项。如果有人有这些想法,请告诉我。提前致谢
    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 2020-01-05
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多