4

我想使用正则表达式从英国邮政编码中提取区号。例如,这将从“SW11 1AW”中删除“SW”。该区域始终是字符串的第一个字符,并且后跟一个数字。我不能只提取前两个字符,因为有时只有一个字母,例如“E1 4PN”。所以它只需要从字符串的开头匹配 AZ 直到它遇到一个数字并只返回字母。为了论证起见,字符串将始终为大写。

谢谢。

4

3 回答 3

1

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.

于 2013-07-25T09:11:15.783 回答
1

(假设 PHP)

$letters = preg_replace('#^([a-z]+).*#i','$1',$postcode);
于 2013-07-25T09:07:50.657 回答
1
^(?i)[a-z]+(?=\d)

如果有两个字母,则将查找前两个字母,如果只有一个字母位于数字之前,则将查找第一个字母,无论大小写。

于 2013-07-25T09:13:54.397 回答