Как я могу построить регулярное выражение, которое позволяет буквенно-цифровой и только один пробел, как:
MM56M pass
MM 54M pass
MMM 5
555555 pass
LPOLKG pass
MM 5T YU does not pass
Спасибо
Будет ли это работать:
^[A-Za-z0-9]+( [A-Za-z0-9]+)?$
Он соответствует одной или нескольким буквам или цифрам в любом случае, затем, возможно, пробелу и одной или нескольким буквам или цифрам в любом случае
Это регулярное выражение должно работать …
/^[[: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