2014-09-19 2 views

Antwort

3

Sie können eine Rückreferenzierung verwenden (\1) in einem negativen Look-Ahead ((?!…)) wie folgt aus:

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

Dieses Muster wird jeden String aus ‚Wort‘ Zeichen (lateinische Buchstaben, Dezimalstellen oder Unterstrichen) aber nur, wenn diese Zeichenfolge nicht drei aufeinanderfolgende Kopien desselben Zeichens enthält.

Um die HTML5 pattern Attribut zu verwenden, das wäre:

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

Demonstration

+0

Schöne Antwort !! :) –

+0

Es funktioniert .. Danke .. @ p.s.g. – Ved

2

Sie auch versuchen, dieses Muster mit JavaScript

(\w)\1{2,} 

und Sie können es testen auf jsfiddle zu

Der JavaScript-Code ist wie folgt:

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 
       } 
      } 
     ); 
    } 
); 

Wo $('#input') das Textfeld input mit ID auswählt. Auch mit dem {2,} im Regex-Muster kann man die Länge der wiederholten Zeichen kontrollieren. Wenn Sie beispielsweise die 2 in 4 ändern, entspricht das Muster 5 wiederholten Zeichen oder mehr.

+0

Schöne Antwort. !!! –

Verwandte Themen