【问题标题】:dart regex for validating postal code format用于验证邮政编码格式的 dart 正则表达式
【发布时间】:2020-06-19 13:23:42
【问题描述】:

我正在尝试创建正则表达式来验证所有邮政编码格式。我找到了What is the ultimate postal code and zip regex? 的答案,但它在 dart 中不起作用。以下是答案中的标准,这正是我正在寻找的

  1. 每个邮政编码系统仅使用 A-Z 和/或 0-9,有时还使用空格/破折号

  2. 并非每个国家/地区都使用邮政编码(例如都柏林以外的爱尔兰),但我们将在这里忽略它。

  3. 最短的邮政编码格式是带有NN的塞拉利昂

  4. 最长的是美属萨摩亚,有NNNN-NNNNNN

  5. 您应该允许一个空格或破折号。

  6. 不应以空格或破折号开头或结尾

这是我需要转换为 dart (?i)^[a-z0-9][a-z0-9\- ]{0,10}[a-z0-9]$ 的正则表达式

【问题讨论】:

    标签: regex flutter dart


    【解决方案1】:
    bool isZipValid = RegExp(r"^[a-z0-9][a-z0-9\- ]{0,10}[a-z0-9]$", caseSensitive: false).hasMatch(zip);
    

    (?i)(不区分大小写模式)是FormatException: Illegal RegExp pattern的罪魁祸首

    【讨论】:

      【解决方案2】:

      格式化英国邮政编码

      String _formattedPostcode(postcode) {
          RegExp regExp = RegExp(
            r'^([A-Z]{1,2}\d{1,2}[A-Z]?)\s*(\d[A-Z]{2})$'
          );
          var _pureString = postcode.replaceAll(' ', '');
          var fromat = regExp.hasMatch(_pureString);
      
          if(fromat) {
            final match = regExp.firstMatch(_pureString.toUpperCase());
            return "${match?.group(1)?.padLeft(2, '0')} ${match?.group(2)?.padLeft(2, '0')}";
          } else {
            return postcode;
          }
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 2015-07-06
        • 2012-06-24
        相关资源
        最近更新 更多