Если вы также хотите поймать это на клиенте, перед отправкой (где вы также будете проверять) вы можете использовать match для подсчета экземпляров шаблона в строке.
function validSpacesNoShouting(input){
var s= input.value, L= input.value.length,
minspace= 1+ L/10, //figure min spacing
lowC= (s.match(/([a-z])/g) || []).length,
upC= (s.match(/([A-Z])/g) || []).length;
return s.match(/(\s)/g).length> minspace && lowC> upC;
}