regex - que - expresiones regulares para hacer coincidir una palabra con caracteres únicos(no repetidos)
javascript regex example (3)
Estoy buscando una expresión regular que coincida con una palabra solo si todos sus caracteres son únicos, es decir, cada carácter de la palabra aparece solo una vez.
Ejemplo :
abcdefg
-> devolverá MATCH
abcdefgbh
-> devolverá NO MATCH (porque la letra b
repite más de una vez)
Este también proporcionaría una coincidencia completa a cualquier palabra de longitud con letras no repetitivas:
^(?!.*(.).*/1)[a-z]+$
Revisé ligeramente la answer proporcionada por @Bohemian a otra pregunta hace un tiempo para obtener esto.
También ha pasado un tiempo desde que se hizo la pregunta anterior, pero pensé que sería bueno tener este patrón de expresiones regulares aquí.
Intenta esto, podría funcionar,
^(?:([A-Za-z])(?!.*/1))*$
Explicación
Assert position at the beginning of a line (at beginning of the string or after a line break character) «^»
Match the regular expression below «(?:([A-Z])(?!.*/1))*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the regular expression below and capture its match into backreference number 1 «([A-Z])»
Match a single character in the range between “A” and “Z” «[A-Z]»
Assert that it is impossible to match the regex below starting at this position (negative lookahead) «(?!.*/1)»
Match any single character that is not a line break character «.*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the same text as most recently matched by capturing group number 1 «/1»
Assert position at the end of a line (at the end of the string or before a line break character) «$»
Puede verificar si hay 2 instancias del carácter en la cadena:
^.*(.).*/1.*$
(Simplemente capturo uno de los personajes y verifico si tiene una copia en otra parte con una referencia posterior. El resto de .*
le importa).
Si la expresión regular anterior coincide, entonces la cadena tiene carácter repetitivo. Si la expresión regular anterior no coincide, entonces todos los caracteres son únicos.
Lo bueno de la expresión regular anterior es cuando el motor de expresiones regulares no admite mirar alrededor.
Aparentemente, la solución de John Woo es una forma hermosa de verificar la singularidad directamente. Afirma a cada carácter que la cadena por delante no contendrá el carácter actual.