编写一个排除我自己的邮政编码的邮政编码正则表达式

时间:2015-04-07 19:47:38

标签: regex

我目前想要编写一个与我自己的邮政编码不匹配的正则表达式。我认为我可以用负面的前瞻等方式做到这一点,但这些只是在找到任何邮政编码后(包括我自己的!)。我也希望这可以在一个短语中,而不需要任何额外的代码(无论是JS,Python等)。

这是我目前所拥有的(改变后的邮政编码,并没有完成所需的工作):

(?=(my postcode regex)(?!SW1 1AA))

假设我的邮政编码是SW1 1AA,我希望得到以下结果:

We need to go to EC2 2BB from SW1 1AA.   <---MATCH
We need to go to EC2 2BB soon.           <---MATCH
We need to go back to SW1 1AA soon.      <---NO MATCH

有人可以建议,因为我现在有点难过,因为我也看到了使用底片!和^也是。提前谢谢!

2 个答案:

答案 0 :(得分:0)

您没有指定编程语言或REGEX引擎,但这里有一种使用PCRE正则表达式引擎的方法。

使用否定预测来检查您当前的邮政编码。

((?!SW1 1AA)(my postcode regex))

这是我为验证正则表达式而制作的简单邮政编码正则表达式。

((?!SW1 1AA)([A-Z\d]{3}\s[A-Z\d]{3}))

Regex Demo

We need to go to EC2 2BB from SW1 1AA. <---MATCHES EC2 2BB, but will not match SW1 1AA.
We need to go to EC2 2BB soon.         <---MATCHES EC2 2BB
We need to go back to SW1 1AA soon.    <---NO MATCHES

答案 1 :(得分:0)

除了@Nathan建议的另一种可能性之外,另一种可能性是使用负面的后视,因为你在比赛结束时进行检查。因此,假设“我的邮政编码正则表达式”如下:[A-Z0-9]{3} [A-Z0-9]{3},此正则表达式适用于我的所有测试用例:

([A-Z0-9]{3} [A-Z0-9]{3})(?<!SW1 1AA)

您可以尝试here