我试图匹配某些快递公司的跟踪号码。该公司的有效跟踪号码为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共享。)