表单验证只允许 6 或 9 个数字?

Form Validation to Allow 6 or 9 numbers Only?

我有一个表单,其中有一个字段只接受访问代码的数字。访问代码是 6 位或 9 位数字。目前我正在使用

验证该字段
elseif (( ! is_numeric($values['access'])) || ! preg_match('/[0-9]{6,9}$/', $values['access']))

允许 6 到 9 个数字。我怎样才能只允许 6 或 9 个号码?

我猜大概是

elseif (( ! is_numeric($values['access'])) || ! preg_match('/[0-9]{6}[0-9]{9}$/', $values['access']))

但我们都知道那行不通。有人能指出我正确的方向吗?

(a|b) 将匹配 a 或 b。所以!

^(\d{6}|\d{9})$

将匹配 6 个数字或 9 个数字。

你可以在这里进行测试https://regex101.com/r/Chx10H/1/

更高效的方法,需要 27 步(接受答案 36 步):

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

Demo & explanation