2011-05-30 19 views

Respuesta

7

Se puede utilizar esta función:

function hasRepeatedLetters(str) { 
    var patt = /^([a-z])\1+$/; 
    var result = patt.test(str); 
    return result; 
} 
+2

Porque [si lo ejecuto] (http://jsfiddle.net/Eric/3M8wx/embedded/result/), se produce un error. – Eric

+0

¿qué debo hacer si es solo el mismo carácter repetido en la cadena simplemente "aaaaaaaaaaaa" y no "aadaa" – vetri02

+0

@weblearner Ambos devolverán "verdadero". ¿Quieres que se comporte de manera diferente? – melhosseiny

2
function check(str) { 
    var tmp = {}; 
    for(var i = str.length-1; i >= 0; i--) { 
     var c = str.charAt(i); 
     if(c in tmp) { 
      tmp[c] += 1; 
     } 
     else { 
      tmp[c] = 1; 
     } 
    } 
    var result = {}; 
    for(c in tmp) { 
     if(tmp.hasOwnProperty(c)) { 
      if(tmp[c] > 1){ 
       result[c] = tmp[c]; 
      } 
     } 
    } 
    return result; 
} 

Luego puede verificar el resultado para obtener los caracteres repetidos y su frecuencia. si el resultado está vacío, no hay repetición allí.

+1

Tenga en cuenta que el uso de la notación '[]' en cadenas no es compatible con algunos navegadores antiguos; en esos, use 'c = str.charAt (i)' en lugar de 'c = str [i]'. –

+0

@ T.J.Crowder: gracias – wong2

11

utilizar expresiones regulares:

var hasDuplicates = (/([a-z])\1/i).test(str) 

O si no se desea capturar aA y los gustos

var hasDuplicates = (/([a-zA-Z])\1/).test(str) 

O, si ha decidido que quiere aclarar su pregunta:

var hasDuplicates = (/^([a-zA-Z])\1+$/).test(str) 
3

Trate de usar este

checkRepeat = function (str) { 
    var repeats = /(.)\1/; 
    return repeats.test(str) 
} 

Ejemplo de uso

if(checkRepeat ("aaaaaaaa")) 
alert('Has Repeat!') 
1

Esto comprobará si la cadena tiene repite más de dos veces:

function checkStr(str) { 
    str = str.replace(/\s+/g,"_"); 
    return /(\S)(\1{2,})/g.test(str); 
} 
0
var char = "abcbdf..,,ddd,,,d,,,"; 
var tempArry={}; 

for (var i=0; i < char.length; i++) { 
    if (tempArry[char[i]]) { 
     tempArry[char[i]].push(char[i]); 
    } else { 
     tempArry[char[i]] = []; 
     tempArry[char[i]].push(char[i]); 
    } 
} 

console.log(tempArry); 

Esto igualará devolver el número de r personajes repetidos también.

0

He resuelto que el uso de un bucle for , no con expresiones regulares

//This check if a string has 3 repeated letters, if yes return true, instead return false 
 
//If you want more than 3 to check just add another validation in the if check 
 

 
function stringCheck (string) { 
 
    for (var i = 0; i < string.length; i++) 
 
     if (string[i]===string[i+1] && string[i+1]===string[i+2]) 
 
      return true 
 
    
 
    return false \t 
 
} 
 
var str1 = "hello word" //expected false 
 
var str2 = "helllo word" //expredted true 
 
var str3 = "123 blAAbA" //exprected false 
 
var str4 = "hahaha haaa" //exprected true 
 

 
console.log(str1, "<==", stringCheck(str1)) 
 
console.log(str2, "<==", stringCheck(str2)) 
 
console.log(str3, "<==", stringCheck(str3)) 
 
console.log(str4, "<==", stringCheck(str4))

Cuestiones relacionadas