我放弃.我需要一个(PHP)正则表达式,它只匹配从01001到99998的 5位数字.
因此,无效例如是1234,但不是01234.此外01000无效,01002无效,依此类推.除99999之外的任何其他5位数字均有效.
我所拥有的是以下正则表达式,它符合我的要求 - 除了它仍然匹配99999.
任何人都可以帮忙吗?谢谢...
^01\d\d[1-9]|[1-9]\d{3}[(?<=9999)[0-8]|[0-9]]$
Run Code Online (Sandbox Code Playgroud)
更新
对不起,每个人,但事情都比较复杂.我没有正确解释.德国邮政编码也可以是04103(请参阅此处的一些其他示例列表)
Amb*_*ber 14
你很亲密:
^0[1-9]\d\d(?<!0100)0|0[1-9]\d\d[1-9]|[1-9]\d{3}[0-8]|[1-9]\d{3}(?<!9999)9$
Run Code Online (Sandbox Code Playgroud)
但是如果你可以做一个更简单的正则表达式,然后使用单独的数字比较,那可能更容易阅读.
或者,更简单的版本:
^(?!01000|99999)(0[1-9]\d{3}|[1-9]\d{4})$
Run Code Online (Sandbox Code Playgroud)
(更简单的版本只是"取数字01000- 99999并通过前瞻删除两端."
最快的方法是检查字符串是否由5位数组成,然后检查它是否在指定范围内:
if ( preg_match('/^\d{5}$/', $input) && (int) $input > 1000 && (int) $input < 99999 ) {}
Run Code Online (Sandbox Code Playgroud)