2013-02-21 28 views
0

我想測試一個狀態代碼的字符串,正則表達式我已經是如何編寫RegEx來檢查特定數量的字符?

^A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY]$ 

的問題是,如果我有像「CTA12」作爲測試字符串,它會得到一個匹配的CT 。我如何修改我的正則表達式,使其只匹配不屬於較大字符串的州代碼?

回答

3

您對替換錨的使用不正確,^AB|DC$表示「以AB開頭或以DC結尾的字符串」。爲了使^$都適用於交替的每個元素,您需要將交替放入一個組中,例如^(AB|DC)$

試着改變你的正則表達式如下:

^(A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$ 

使用一組的另一種方法是把^$作爲交替每個元素的一部分,例如^AB$|^DC$,但是這將使你的正則表達式要長得多,所以一個小組是要走的路。

+0

太棒了,謝謝! – antonpug 2013-02-21 19:50:06

相關問題