无连续空格 RegEx 组 PHP

No Consecutive Spaces RegEx Group PHP

^([A-Za-z0-9 ]){8,12}

如何将其变成可以在任何位置但不是连续的空格的东西?

我估计:

A L L 0 W E D

N O T  A L L 0 W E D # Note two spaces between `not` and `allowed`

您可以使用 lookahead/behind 技术,如下所示: '/^([A-Za-z0-9]| (?! )){8,12}/' 。这意味着我们期望 A-Z、a-z 和 0-9 或 space,但后面没有 space。看看结果:

$strs = array(
    '12345678',
    'A L L 0 W E D',
    'N O T  A L L 0 W E D' # Note two spaces between `not` and `allowed`
);

$preg = '/^([A-Za-z0-9]| (?! )){8,12}/';

foreach ($strs as $str) {
    var_dump(preg_match($preg, $str));
}

return;

会return:

int(1)
int(1)
int(0)