Regex в PHP, который позволяет буквенно-цифровой с одним пробелом

Как я могу построить регулярное выражение, которое позволяет буквенно-цифровой и только один пробел, как:

MM56M pass
MM 54M pass
MMM 5
555555 pass
LPOLKG pass
MM 5T YU does not pass

Спасибо

-4

Решение

Будет ли это работать:

^[A-Za-z0-9]+( [A-Za-z0-9]+)?$

Он соответствует одной или нескольким буквам или цифрам в любом случае, затем, возможно, пробелу и одной или нескольким буквам или цифрам в любом случае

2

Другие решения

Это регулярное выражение должно работать …

/^[[:alnum:]]+( [[:alnum:]]+)?$/

Демо-версия: https://regex101.com/r/hQ6fM4/2 (не g используемый здесь модификатор не будет использоваться в PHP, если строка многострочная, используйте m Итак ^$ влияет на каждую строку).

[[:alnum:]] является скобкой для символа posix для буквенного или числового символа + after — это квантификатор, означающий один или несколько из этих символов. ^$ якоря ^ это начало строки, $ это конец. () это группировка и ? after делает эту вторую группу необязательной. / разделители, рассказывающие, где начинается и заканчивается регулярное выражение

или если вы хотите странный подход:

$str = 'test test';
$post = preg_replace('/\s/', '', $str);
if (((strlen($str) - 1) == strlen($post) || (strlen($str) == strlen($post))) && ctype_alnum($post)) {
echo  'tis good';
} else {
echo 'rut row';
}

Демо-версия: https://eval.in/505494

0