Если вы хотите сопоставить только буквенно-цифровые символы (то есть считать строку недействительной, как только в ней есть что-то еще, например пробелы или специальные символы), это должно сработать.
В противном случае, просто удалите первый preg_match()
.
function myTest($string)
{
echo "test '".$string."': "
. intval(preg_match('/^[a-z\d]+$/i', $string) // has only chars & digits
&& preg_match('/[a-z]/i', $string) // has at least one char
&& preg_match('/\d/', $string)) // has at least one digit
. "\n";
}
myTest('aAa'); // => 0
myTest('111'); // => 0
myTest('aAa111bbb'); // => 1
myTest('111aAabbb'); // => 1
myTest('aAabbb111'); // => 1
myTest('111bBb222'); // => 1
myTest('111 bBb 222'); // => 0
myTest('$$'); // => 0
На самом деле это не проблема "стиля", поэтому CSS не может ее охватить.