我想使用正则表达式从英国邮政编码中提取区号。例如,这将从“SW11 1AW”中删除“SW”。该区域始终是字符串的第一个字符,并且后跟一个数字。我不能只提取前两个字符,因为有时只有一个字母,例如“E1 4PN”。所以它只需要从字符串的开头匹配 AZ 直到它遇到一个数字并只返回字母。为了论证起见,字符串将始终为大写。
谢谢。
In ruby this would look like:
postcode = 'SW11 1AW'
postcode[/^[a-z]+/i] # get the area code
#=> "SW"
postcode[/^[a-z]+(.*)/i,1] # get the rest
#=> "11 1AW"
Note: The i
flag (ignore case) is set. So both, uppercase and downcase letters work.
(假设 PHP)
$letters = preg_replace('#^([a-z]+).*#i','$1',$postcode);
^(?i)[a-z]+(?=\d)
如果有两个字母,则将查找前两个字母,如果只有一个字母位于数字之前,则将查找第一个字母,无论大小写。