首页 > 解决方案 > 排除邮政编码时出错

问题描述

我在 Ruby 中的正则表达式出现错误 - 邮政编码BT9 6NZ设法通过写成BT96NZ- 有没有办法编辑它以使其万无一失?

我拥有的代码如下:

^BT\d{1,2}\s|^HS\d{1,2}\s|KA27|AB31|AB32|AB33|AB34|AB35|AB36|AB37|AB38|PH4|PH5|PH6|PH7|PH8|PH9|KA28|^KW\d{1,2}\s|^IM\d{1,2}\s|^IV\d{1,2}\s|^AB4\d{1}\s|^AB5\d{1}\s|^PA2\d{1}\s|^PA3\d{1}\s|^PA4\d{1}\s|^PA5\d{1}\s|^PA6\d{1}\s|^PA7\d{1}\s|^PH1\d{1}\s|^PH2\d{1}\s|^PH3\d{1}\s|^PH4\d{1}\s|^PH5\d{1}\s

标签: rubyregexpostal-code

解决方案


您在问题中显示的正则表达式与“BT96NZ”不匹配

/^BT\d{1,2}\s|^HS\d{1,2}\s|KA27|AB31|AB32|AB33|AB34|AB35|AB36|AB37|AB38|PH4|PH5|PH6|PH7|PH8|PH9|KA28|^KW\d{1,2}\s|^IM\d{1,2}\s|^IV\d{1,2}\s|^AB4\d{1}\s|^AB5\d{1}\s|^PA2\d{1}\s|^PA3\d{1}\s|^PA4\d{1}\s|^PA5\d{1}\s|^PA6\d{1}\s|^PA7\d{1}\s|^PH1\d{1}\s|^PH2\d{1}\s|^PH3\d{1}\s|^PH4\d{1}\s|^PH5\d{1}\s/.match? 'BT96NZ'
=> false

/^BT\d{1,2}\s|^HS\d{1,2}\s|KA27|AB31|AB32|AB33|AB34|AB35|AB36|AB37|AB38|PH4|PH5|PH6|PH7|PH8|PH9|KA28|^KW\d{1,2}\s|^IM\d{1,2}\s|^IV\d{1,2}\s|^AB4\d{1}\s|^AB5\d{1}\s|^PA2\d{1}\s|^PA3\d{1}\s|^PA4\d{1}\s|^PA5\d{1}\s|^PA6\d{1}\s|^PA7\d{1}\s|^PH1\d{1}\s|^PH2\d{1}\s|^PH3\d{1}\s|^PH4\d{1}\s|^PH5\d{1}\s/.match? 'BT9 6NZ'
=> true

所以我认为您的问题不是正则表达式,而是您使用它来过滤参数的代码。


推荐阅读