我正在尝试测试状态代码的字符串,我的正则表达式是
^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 的匹配。如何修改我的正则表达式以使其仅匹配不属于较大字符串的状态代码?
最佳答案
您对交替 anchor 的使用不正确,^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$
,但这会使你的正则表达式显着变长,所以一组是最好的选择。
关于javascript - 如何编写正则表达式来检查特定数量的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15010872/