Se necesita una expresión regular que debe tener solo un punto de carácter especial que debe ser opcional u ocurrir solo una vez.
pattern = /^([A-Za-z.]+)$/;
Sin más información usaría
/^(?!$)[az]*\.?[az]*$/i
La anticipación negativa evita coincidencias vacías.
Aquí hay algunas maneras de hacerlo:
Trate por separado donde la entrada tiene un punto, con letras opcionales rodeándolo, o sin punto (pero luego tiene al menos una letra):
Simplemente capture letras y puntos como lo hizo, pero no permita que la entrada tenga dos puntos, usando una mirada negativa hacia adelante:
Capture letras opcionales, luego un punto opcional y luego letras opcionales, pero prohíba una entrada vacía con una anticipación negativa:
Si, en cualquier caso, el punto no debe estar al principio o al final y no coincide con una cadena vacía, puede comenzar la coincidencia con 1 o más caracteres az y luego, opcionalmente, hacer coincidir un punto y nuevamente 1 o más caracteres az:
/^[az]+(?:\.[az]+)?$/i