具有特定邮政编码的正则表达式

regex with specific zip codes

我在以下情况下需要帮助: pr_zip 场比赛 'someregexhere'

问题是我 return 72701,我不想 return 这个 zip。我只想 return 这些拉链。

我想过做这样的事情

7(190).?%|7(191).?%|7(1949).?|7(195).?%7(1949).?%

但这看起来很笨拙,必须有更好的方法。

'7[1,2,5][0,7,8,9,5][0-9][0-9]%')

这不起作用,因为它提取的邮政编码比我需要的多。

有人有想法吗?

71901%
71902%
71903%
71909%
71910%
71913%
71914%
71949%
71951%
71956%
71964%
71968%
72087%
71834%
71937%
71839%
71840%
71854%
71724%
71730%
71731%
71747%
71749%
71750%
71758%
71759%
71762%
71765%
71768%
75501%
75503%
75504%
75505%
75507%
75559%
75561%
75567%
75569%
75570%
75573%
75574%
75599%

给你。

你可以使用一个不错的小工具为你做这件事 Strings to Regex

7(?:1(?:7(?:24|3[01]|4[79]|5[089]|6[258])|8(?:3[49]|40|54)|9(?:0[1239]|1[034]|37|49|5[16]|6[48]))|2087|55(?:0[13457]|59|6[179]|7[034]|99))%

https://regex101.com/r/EePsaG/1

格式化:

 7
 (?:
      1
      (?:
           7
           (?:
                24
             |  3 [01] 
             |  4 [79] 
             |  5 [089] 
             |  6 [258] 
           )
        |  8
           (?: 3 [49] | 40 | 54 )
        |  9
           (?:
                0 [1239] 
             |  1 [034] 
             |  37
             |  49
             |  5 [16] 
             |  6 [48] 
           )
      )
   |  2087
   |  55
      (?:
           0 [13457] 
        |  59
        |  6 [179] 
        |  7 [034] 
        |  99 
      )
 )
 %

没有理由精打细算;只需使用普通的旧交替:

\b(71901|71902|...etc)\b

尝试 "minimise" 正则表达式只会混淆 zips,这使得阅读和维护正则表达式几乎不可能。

KISS principle