【发布时间】:2019-05-13 18:45:13
【问题描述】:
我的当前正则表达式可以正常工作:
^[a-zA-Z]{2}[0-9]{8}$
它适用于仅包含 2 个字母后跟 8 个数字的现有模式,例如 AB12345678 或 yZ01928374
我需要将其更改为满足 3 个条件的新正则表达式:
1) 如果前2个字母后面跟一个数字“9”,那么后面可以跟7个或8个数字[0-9]{7,8}。例如AB91234567 或AC912345678 都是有效的。
2) 如果前 2 个字母后跟一个 0-5 之间的单个数字,那么它后面可以紧跟 8 个数字 [0-9]{8}。比如AB412345678
3) 如果前 2 个字母后跟 6-8 之间的数字,那么它可以紧跟 7 位数字[0-9]{7}。比如AB71234567
我有一些零碎的东西,但我真的不确定如何将所有 3 个条件放在一起以 1 个不错的表达式。
【问题讨论】:
-
顺便说一句,这是我想出的,但我知道它是否真的有效:^[a-zA-Z]{2}+(9\d[0-9]{7 ,8}|\d[0-5]{1}\d[0-9]{8}|\d[6-8]{1}\d[0-9]{7})$
-
这里缺少一个替换
|\d[6-8]{1}\d|[0-9]{7})$,除了它看起来不错并且不需要+ -
您基本上需要交替处理您的三个案例。检查我的answer 以及解释和演示。而且您在 cmets 中提到的正则表达式有点不正确。在
{2}之后不需要+,也不需要同时写\d[0-9],而只需要写\d或[0-9]来代表一个数字。
标签: javascript regex regex-lookarounds regex-group