Ver Mensaje Individual
  #123 (permalink)  
Antiguo 29/04/2003, 11:11
Avatar de KarlanKas
KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 10 meses
Puntos: 61
125.- Contar caracteres iguales seguidos en un input

P.-Cómo saber si han rellenado un input con varios caracteres iguales?
R.-Por medio de este script:

Tema: Formularios


Código PHP:
<html>
<
head>
    <
title>Contando letritas</title>
    <
script>
//Script original de KarlanKas para Forosdelweb.com


    
record=0;
    
igual=1;
    var 
letraRecord
    
var b=0
    
var letra=""
    
function comprobar(esto){
    
    for (
a=1;a<esto.length;a++){
    
    if (
esto.charAt(a)==esto.charAt(b)){
    
igual=igual+1;
    
letra=esto.charAt(a);}
    else{
    if(
igual>record){record=igual;letraRecord=letra}
    
igual=1
    
}
    
b=a
    
}
    if(
igual>record){record=igual;letraRecord=letra}
    if (
record>1){alert("La letra que más se repite es la "+letraRecord+" que aparece seguida "+record+" veces.")}
    else {
alert("Ninguna letra se repite seguida");}
    }
    
</script>
</head>

<body>
<form action="javascript:alert('HOLAA!!')"
      method="post"
      name="formuario"
      id="formuario">
      
      <input type="text"
             name="caja"
             size="130"
             onblur="comprobar(this.value)">
      
      
      </form>


</body>
</html> 
Dernuke propone una versión usando expresiones regulares y propone algún variante:

Código:
<html>
<head>
<title>Contando letritas</title>
<script>
// por derkeNuke
function comprobar(str) {


    var res=str.match(/([a-z]){1}\1+/gi);
    
    
    mensaje="Las repeticiones de letras seguidas son: \r";
    for(a=0; a<res.length; a++)
        mensaje+="- "+res[a].substring(0,1)+" "+res[a].length+" veces.\r";
    alert(mensaje);
    
    
    // si queremos ordenar el resultado de mayor a menor repeticion:
    res.sort( function(a,b) {
        if(a.length>b.length) return -1;
        else if(a.length==b.length) return 0;
        else return 1;
    } );
    
    
    mensaje="Las repeticiones de letras seguidas ya ordenadas son: \r";
    for(a=0; a<res.length; a++)
        mensaje+="- "+res[a].substring(0,1)+" "+res[a].length+" veces.\r";
    alert(mensaje);
    
    
}
</script>
</head>

<body>
<form action="javascript:alert('HOLAA!!')"
      method="post"
      name="formuario"
      id="formuario">
       
      <input type="text"
             name="caja"
             size="130"
             value="eqewwqFaaaasscccFasaeqw"
             onblur="comprobar(this.value)">
      </form>


</body>
</html>
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 02/08/2005 a las 07:45