Это регулярное выражение должно работать ...
/^[[:alnum:]]+([[:alnum:]]+)?$/
Demo: https://regex101.com/r/hQ6fM4/2 (не g
модификатор используется здесь не будет использоваться в PHP, если строка многострочного используйте m
так ^$
влияют друг линия).
[[:alnum:]]
- это символьная скобка posix для альфа-или числового символа. +
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
См [Обучение регулярных выражений] (http://stackoverflow.com/a/2759417/3832970). –
Почему бы просто не подсчитать пробелы и проверить, если более 1? (без регулярного выражения) –
Мне тоже нужно это как буквенно-цифровое –