用于验证邮政编码格式的 DART 正则表达式



我正在尝试创建正则表达式来验证所有邮政编码格式。我找到了答案 什么是最终的邮政编码和邮政编码正则表达式?但它在飞镖中不起作用。以下是答案中的标准,这正是我正在寻找的

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

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

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

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

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

  6. 不应以空格或短划线开头或结尾

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

bool isZipValid = RegExp(r"^[a-z0-9][a-z0-9- ]{0,10}[a-z0-9]$", caseSensitive: false).hasMatch(zip);

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

格式化英国邮政编码

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;
}
}

最新更新