正则表达式匹配特定长度的多个字符串之一

时间:2017-07-31 13:20:33

标签: regex

我试图匹配某些快递公司的跟踪号码。该公司的有效跟踪号码为12,15,20或22位。什么是正则表达式匹配12,15,20或22位数,但不是其他长度?

众所周知,数量可以用在正则表达式中,大括号表示前面的标记必须匹配一定次数。

因此,{12,15}将匹配12到15个令牌,而不仅仅是12或15个。{12}将完全匹配12. {12,}将匹配12或更多。不,{12|15}无效。

所以,虽然我希望有类似的东西:

/\D([0-9]{12|15})\D/\D与非数字字符匹配)

是有效的,我目前的解决方案是:

\D([0-9]{12}|[0-9]{15})\D/

显然,我的最终表达式也需要匹配20或22位的字符串,因此这种思路会导致冗长:

/\D([0-9]{12}|[0-9]{15}|[0-9]{20}|[0-9]{22})\D/

我希望有类似的东西:

\D([0-9]{12|15|20|22})\D

也可以。

(工作模式,包含有效和无效的数字,在http://regexr.com/3gfb3共享。)

0 个答案:

没有答案