Mi tarea es verificar si la cadena de una longitud arbitraria contiene alguna letra latina, excepto letras específicas (en mi caso, no se permiten letras que coincidan con números romanos (I,V,X,L,C))
Entonces, si no hay una letra latina presente, la cadena no es válida, si está presente un carácter específico (mencionado anteriormente), la cadena no es válida. De lo contrario, la cadena es válida.
¿Podría alguien ayudarme a encontrar la expresión regular adecuada para esa condición?
Ejemplos:
123 - inválido
123 aAA - válido
ABD - válido
AAa ddDD zzZz - válido
AXXXA - inválido
IV abc - inválido
Este es un requisito RegEx estándar, cree una clase de caracteres de todos los caracteres que desea hacer coincidir. A partir de su pregunta, este RegEx debería hacerlo por usted: /^[^CDILMXV]*(?:[ABE-JKN-UWY-Z])+[^CDILMXV]*$/i
Nota: estoy permitiendo más números romanos de los que tenía en su publicación, si eso no es lo que necesita, ajuste en consecuencia.
El RegEx debe tener al menos un carácter latino permitido (la parte del medio (?:[ABE-JKN-UWY-Z])+ y no debe haber caracteres latinos no permitidos antes o después de la coincidencia del medio (el [^CDILMXV]* en el principio y el final)
Esto debería coincidir con todas sus entradas.
Esto debería ser. La primera parte (?=.*[az]) comprueba las letras latinas y [^XLVCI] cualquier cosa además de estos caracteres.
let string1 = '123' let string2 = '123 aAA' let string3 = 'ABD' let string4 = 'AAa ddDD zzZz' let string5 = 'AXXXA' let string6 = 'IV abc' let regex = /^(?=.*[a-zA-Z])[^XLVCI]+$/ let result = string1.match(regex) console.log(string1.match(regex)) console.log(string2.match(regex)) console.log(string3.match(regex)) console.log(string4.match(regex)) console.log(string5.match(regex)) console.log(string6.match(regex))