正则表达式,用于提取英国邮政编码的第一个字母


Regular expression to extract first letters of UK postcode

我想使用正则表达式从英国邮政编码中提取区号。例如,这将从"SW11 1AW"中删除"SW"。区域总是字符串的第一个字符,后面总是一个数字。我不能只提取前两个字符,因为有时只有一个字母,例如"E14PN"。因此,它只需要从字符串的开头匹配A-Z,直到它命中一个数字并只返回字母。为了便于说明,字符串将始终为大写。

谢谢。

(假设PHP)

$letters = preg_replace('#^([a-z]+).*#i','$1',$postcode);

在ruby中,这看起来像:

postcode = 'SW11 1AW'
postcode[/^[a-z]+/i] # get the area code
#=> "SW"
postcode[/^[a-z]+(.*)/i,1] # get the rest
#=> "11 1AW"

注意:已设置i标志(忽略大小写)。所以大写字母和小写字母都有效。

^(?i)[a-z]+(?='d)

如果有两个字母,将查找前两个字母;如果只有一个字母,则查找前一个字母。