2014-09-19 6 views

risposta

3

È possibile utilizzare un backreference (\1) all'interno di un lookahead negativo ((?!…)) come questo:

/^(?:(\w)(?!\1\1))+$/ 

Questo modello corrisponderà qualsiasi stringa composta da caratteri 'Parola' (lettere latine, cifre decimali, o di sottolineatura) ma solo se quella stringa non contiene tre copie consecutive dello stesso carattere.

Per utilizzare l'attributo HTML5 pattern, che sarebbe:

<input type="text" pattern="^(?:(\w)(?!\1\1))+$"> 

Demonstration

+0

Bella risposta !! :) –

+0

Funziona .. Grazie .. @ p.s.w.g – Ved

2

È inoltre provare questo modello con JavaScript

(\w)\1{2,} 

e si può provare su jsfiddle troppo

Il codice JavaScript è come questo:

jQuery(document).ready(
    function($) 
    { 
     $('#input').on(
      'keyup', 
      function() 
      { 
       var $regex = /(\w)\1{2,}/; 
       var $string = $(this).val(); 

       if($regex.test($string)) 
       { 
        // Do stuff for repeated characters 
       } 
       else 
       { 
        // Do stuff for not repeated characters 
       } 
      } 
     ); 
    } 
); 

Dove $('#input') seleziona il campo di testo con ID input. Inoltre con lo {2,} nel modello regex è possibile controllare la lunghezza se i caratteri ripetuti. Se ad esempio si modificain 4, il modello corrisponderà a 5 caratteri ripetuti o più.

+0

Bella risposta. !!! –