如何编写只能匹配 2 位或 5 位数字的正则表达式?
到目前为止我有这个,但它匹配任何 2 到 5 位数的数字。
^\d{2,5}$
使用 3 个可选数字:
^\d{2}\d{3}?$
请注意,某些正则表达式引擎会将?
after any 重复修饰符(甚至是固定修饰符)解释为不贪婪的修饰符,这似乎会导致两位数的情况出现问题。如果您遇到这种情况,请使用:
^\d{2}(?:\d{3})?$
您可以在这个很棒的教程中阅读一些正则表达式基础知识。
顺便说一句,上面的内容实际上等效于(但效率略高),使用交替:
^(?:\d{2}|\d{5})$
(只是为了向您展示另一个正则表达式概念。)
/^\A\d{2}\z$|^\A\d{5}\z$/
A
意思是输入的开始,z
意思是输入的结束。
这适用于 PHP 和 JAVA;不确定js或perl。