用于验证邮政编码格式的 dart 正则表达式
Posted
技术标签:
【中文标题】用于验证邮政编码格式的 dart 正则表达式【英文标题】:dart regex for validating postal code format 【发布时间】:2020-06-19 13:23:42 【问题描述】:我正在尝试创建正则表达式来验证所有邮政编码格式。我找到了What is the ultimate postal code and zip regex? 的答案,但它在 dart 中不起作用。以下是答案中的标准,这正是我正在寻找的
每个邮政编码系统仅使用 A-Z 和/或 0-9,有时还使用空格/破折号
并非每个国家/地区都使用邮政编码(例如都柏林以外的爱尔兰),但我们将在这里忽略它。
最短的邮政编码格式是带有NN的塞拉利昂
最长的是美属萨摩亚,有NNNN-NNNNNN
您应该允许一个空格或破折号。
不应以空格或破折号开头或结尾
这是我需要转换为 dart (?i)^[a-z0-9][a-z0-9\- ]0,10[a-z0-9]$
的正则表达式
【问题讨论】:
【参考方案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\d1,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;
【讨论】:
以上是关于用于验证邮政编码格式的 dart 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
dd/mm/yyyy 格式的日期正则表达式,用于 javascript 验证