Hola:
Otras cosas que he notado es que la función tiene un segundo parámetro que no se usa, y la misma observación del artículo... la línea:
if (s.length == 0 ) return true;
Sale de la función con el valor true, o sea pasando la validación, que evidentemente no debería pasar al estar la cadena vacía (a no ser de que se tratase de un campo no-obligatorio)
Saludos