【发布时间】:2014-10-21 18:01:28
【问题描述】:
我需要一个正则表达式来匹配英国邮政编码的前半部分,并且可能只有一半或完整的邮政编码可以传入。
这里有一个匹配完整邮政编码的好方法:UK Postcode Regex (Comprehensive)
但是,我只需要获取邮政编码的前 3 或 4 个字符,并且有可能传入半个邮政编码或没有空格的邮政编码,所以这些中的任何一个:
SL4 4BZ
SL44BZ - this will pull out just 'SL4'
SL4
DY10
DY10 3BD
DY10 3BD
正则表达式需要匹配:
- 如果长度为 5 个字符(不包括空格),则删除最后 3 个字符 字符和前 2 个剩余字符是 半个邮政编码
- 如果长度为 6 个字符(不包括空格),则删除最后 3 个字符 字符和前 3 个剩余字符是 半个邮政编码
- 如果长度为 7 个字符(不包括空格),则删除最后 3 个字符 字符和前 4 个剩余字符是 半个邮政编码
- 如果是 2、3 或 4 个字符,请保留它
但我无法完全理解如何编写如此复杂的东西。
【问题讨论】:
-
空格?在编写模式时它们似乎很重要,它们不算数,不是吗?
SL 44BZT呢? -
你有用正则表达式来做这件事吗?您所描述的内容使用字符串操作将非常容易。
-
您实际上必须使用某种方法来区分 3 或 4 个邮政编码,而不是长度或空格。
标签: regex postal-code