PHP正则表达式的数字长度只有5或9

Ale*_*tau 5 php regex

我需要一个正则表达式进行字符串验证.字符串可以为空,可以有5位数,也可以有9位数.其他情况无效.我正在使用下一个正则表达式:

/\d{5}|\d{9}/
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Gum*_*mbo 17

正如Marc B在评论中所说,我会使用这个正则表达式:

/^(\d{5}(\d{4})?)?$/
Run Code Online (Sandbox Code Playgroud)

这恰好匹配五个数字,可能后跟另外四个数字(因此总共九个数字)或根本没有字符(注意?数字表达式周围的量词使组成为可选).

与其他提到的具有替换的模式相反,该模式的优点在于,如果匹配的五个数字失败,则不需要回溯.