6

如何编写只能匹配 2 位或 5 位数字的正则表达式?

到目前为止我有这个,但它匹配任何 2 到 5 位数的数字。

           ^\d{2,5}$
4

2 回答 2

15

使用 3 个可选数字:

^\d{2}\d{3}?$

请注意,某些正则表达式引擎会将?after any 重复修饰符(甚至是固定修饰符)解释为不贪婪的修饰符,这似乎会导致两位数的情况出现问题。如果您遇到这种情况,请使用:

^\d{2}(?:\d{3})?$

您可以在这个很棒的教程中阅读一些正则表达式基础知识。

顺便说一句,上面的内容实际上等效于(但效率略高),使用交替:

^(?:\d{2}|\d{5})$

(只是为了向您展示另一个正则表达式概念。)

于 2012-10-26T15:41:08.943 回答
0
/^\A\d{2}\z$|^\A\d{5}\z$/

A意思是输入的开始,z意思是输入的结束。

这适用于 PHP 和 JAVA;不确定js或perl。

于 2016-10-24T13:54:55.753 回答