我正在研究英国的邮政编码,并试图弄清楚如何从数据库(the first part of a UK postcode)中获取数据,并使用c#为它们动态创建正则表达式。例如:
AB44-56我知道我想要什么作为输出:
AB([4][4-9]|[5][0-6])+然而,我不知道如何使用逻辑来做到这一点,也许我需要首先从数字中分离出字母,但我不能使用split来做到这一点。
我也有其他组合-单一范围:
AB31 would be AB[3][1]+一些只有字母:
BT would be BT+有些只有一个字母和一个或两个数字:
G83 Would be G[8][3]任何建议或指导都将非常接近这可能是如何编码的。
发布于 2011-10-07 04:30:40
A来自维基百科英国邮政编码:
可以概括为:(一个或两个字母)(0到99之间的数字)(零或一个字母)(空格)(单个数字)(两个字母)
所以
^[A-Z,a-z]{0,2}\d+[A-Z,a-z]?\s\d[A-Z,a-z]{2}$也许行得通。
编辑:另外,如果您正在尝试重新划分邮政编码,以表示与数据库中的邮政编码具有相同前缀的邮政编码,则可以执行此操作。
var source = "BTasdfweasdf"; //from the database
var input = "BT1A 1BB"; //from the somewhere else
var regex = Regex.Replace(source, @"(^[A-z,a-z]{0,2})(.*)", @"$1\d+[A-Z,a-z]?\s\d[A-Z,a-z]{2}$");
var match = Regex.Match(input,regex); https://stackoverflow.com/questions/7679688
复制相似问题