Вы можете использовать следующее регулярное выражение в режиме без учета регистра:
(?=[a-z]*[0-9])(?=[0-9]*[a-z])[a-z0-9-]+
В основном это соответствует первой строке , которая состоит только из букв и цифр, по крайней мере, из одной буквы и, по крайней мере, из одного числа .
В PHP:
if(preg_match("/(?=[a-z]*[0-9])(?=[0-9]*[a-z])([a-z0-9-]+)/i",$input,$match)) {
echo $match[1];
}
Посмотри