Expresión regular que empiece con mayúscula y acabe en punto

publicado por: Anonymous

Estoy empezando con expresiones regulares y no sé cómo resolver ésta. Se trata de hacer un patrón en JavaScript que empiece en mayúscula y acabe en punto. Este es el código que tengo hecho por el momento:

_x000D_

_x000D_

function validarFrase() {_x000D_
    var frase = document.getElementById("frase").value; _x000D_
_x000D_
    var reg=new RegExp("^[A-Z]+[.]$"); _x000D_
_x000D_
    if (frase.match(reg)){_x000D_
        alert ("El formato es el correcto");_x000D_
    } else {_x000D_
        alert ("El formato es incorrecto"); _x000D_
    }_x000D_
_x000D_
}

_x000D_

Escriba su frase<input type="text" id ="frase"/>_x000D_
<button onclick="validarFrase()">Verificar</button>

_x000D_

_x000D_

_x000D_

El caso es que meto un nombre, por ejemplo, “Paco.” que cumpla los requisitos de la expresión regular y no me hace match, porque la expresión regular está mal, pero no sé como hacerla bien. ¿Alguna ayuda? Gracias.

solución

Intenta con esta expresion:

/^[A-Z][a-z]+[.]$/

Esta indica lo siguiente:

  1. ^[A-Z] : que comienze con 1 letra en mayuscula
  2. [a-z]+ : que contenga 1 o mas letras en minuscula.
  3. [.]$ : que al final del texto tenga el caracter punto ( . ).

Ejemplos:

_x000D_

_x000D_

console.log("Hola.".match(/^[A-Z][a-z]+[.]$/)) // da match_x000D_
console.log("HOla.".match(/^[A-Z][a-z]+[.]$/)); // no da match_x000D_
console.log("HOLA.".match(/^[A-Z][a-z]+[.]$/)); // no da match

_x000D_

_x000D_

_x000D_


En caso de que quieras saber porque tu expresion falla es debido a que espera que el inicio del string tenga 1 o mas letras en mayuscula y que luego tenga el caracter literal ..

Esto indica que el texto HOLA. dara match mientras que Hola. No.

En escencia:

  1. ^[A-Z]+ : que comienze con 1 o mas letras mayusculas
  2. [.]$ : que al final del texto tenga un punto ( . ).
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *