Necesito Regex que compruebe si un String
tiene al menos 4 caracteres únicos. Por ejemplo, si una cadena es "test"
, falla porque tiene tres caracteres diferentes, pero si una cadena es "test1"
, pasa.Necesita Regex que verifique al menos 4 caracteres diferentes en la cadena
Respuesta
No estoy seguro de cómo hacer eso con una expresión regular, ni supongo que sea una buena manera de resolver el problema. He aquí una función de propósito más general con javascript normal:
function countUniqueChars(testVal) {
var index = {};
var ch, cnt = 0;
for (var i = 0; i < testVal.length; i++) {
ch = testVal.charAt(i);
if (!(ch in index)) {
index[ch] = true;
++cnt;
}
}
return(cnt);
}
function hasFourUniqueChars(testVal) {
return(countUniqueChars(testVal) >= 4);
}
se puede ver que funcione aquí: http://jsfiddle.net/jfriend00/bqBRv/
¿Esto realmente funciona? –
@ChuckNorris "Chuck Norris después del dentista" – mowwwalker
Sí, funciona. Ver [jsFiddle] (http://jsfiddle.net/jfriend00/bqBRv/). – jfriend00
Si usted está abierto a la utilización de las bibliotecas adicionales, undescore.js proporciona algunas funciones de utilidad que pueden hacer de este un muy corto y consulta dulce:
function countUniqueCharacters(value) {
return _.uniq(value.split("")).length;
}
var str = "abcdef"
var counter = 0;
hash = new Object();
var i;
for(i=0; i< str.length; i++){
if(!hash[str.charAt(i)]){
counter +=1; hash[str.charAt(i)]=true
}
}
if(counter < 4){
console.log("error");
}
¿Esto no ignora el último carácter? –
No. El último símbolo de la cadena tiene string.length - 1 posición – gayavat
Pero solo interate hasta string.length - 2, fíjate en "i
- 1. regex para n caracteres o al menos m caracteres
- 2. Regex: coincide con toda la cadena a menos que
- 3. ¿Concordancia de cadena exacta en vim? (Al igual que el modo 'regex-off' en menos.)
- 4. Cómo hacer que Integer.toBinaryString devuelva al menos 4 bits
- 5. regex para al menos 2 espacios vacíos?
- 6. RegEx para que una cadena NO contenga dos cadenas diferentes
- 7. RegEx para asegurarse de que la cadena contiene al menos un carácter en minúscula, mayúscula, dígito y símbolo
- 8. Regex para eliminar todos los caracteres especiales de la cadena?
- 9. ¿Cómo dividir la cadena por ',' a menos que ',' esté entre paréntesis usando Regex?
- 10. Fecha actual menos 4 meses?
- 11. Regex eliminar caracteres especiales
- 12. Recortar los últimos 4 caracteres de la cadena?
- 13. Regex - No contiene ciertos caracteres
- 14. IOS: verifique si una cadena es una cadena vacía
- 15. Grep regex que NO contiene cadena
- 16. Cómo eliminar caracteres repetidos en una cadena
- 17. Cómo dividir una cadena por varios caracteres en MSBuild 4?
- 18. regex: obtener números después de cierta cadena de caracteres
- 19. Javascript al agregar ceros al principio de una cadena (longitud máxima de 4 caracteres)
- 20. ¿Cuál es la expresión regular para que coincida con una cadena alfanumérica de 6 caracteres?
- 21. de expresiones regulares para eliminar todo menos caracteres y números
- 22. Hacer la operación menos en la cadena
- 23. ¿Cómo uso una expresión regular para unir cualquier cadena, pero al menos 3 caracteres?
- 24. ¿Escape los caracteres especiales en RegEx?
- 25. dividir cadena en una serie de caracteres diferentes
- 26. Necesita orientación para llamar al servicio WCF de Silverlight 4
- 27. CakePHP - la validación puede estar vacía pero si no está vacía debe tener al menos 4 caracteres y un número
- 28. JavaScript blancos regex caracteres
- 29. Coincidencia de RegEx entre caracteres
- 30. Regex Rechazar Caracteres consecutivos
hacer ** ** No Use una "expresión regular" para esto. Una expresión regular ** no puede manejar este problema ** bien. (Sí, es * posible *, fsvo, pero es una pesadilla y se limita a una longitud de límite superior relativamente pequeña.) –
En realidad, eso no es normal. – Matthias