2012-04-05 33 views
4

SO Freunde, Grüße. Ich habe einige Passwort-Anforderungen, die ich implementieren muss, und eine der Anforderungen ist die Zeichenfolge kann nicht mit einem Sonderzeichen starten oder enden. Ich habe einige Zeit damit verbracht zu googeln, aber mein RegEx Kung-Fu ist kimosab Level.Regex String beginnt oder endet nicht mit Sonderzeichen

Gerade falls Sie in einigen Code interessiert sind, hier ist das JavaScript:
Hinweis: Ja, Passwörter sind auch als gut :) Der folgende Ausschnitt führt die RegEx-Tests auf dem Server validiert und einfach überprüft oder x ist das Zeilenelement, das der Kennwortregel zugeordnet ist.

var validate = function(password){ 
     valid = true; 

     var validation = [ 
      RegExp(/[a-z]/).test(password), RegExp(/[A-Z]/).test(password), RegExp(/\d/).test(password), 
      RegExp(/[-!#$%^&*()_+|~=`{}\[\]:";'<>?,./]/).test(password), !RegExp(/\s/).test(password), !RegExp("12345678").test(password), 
      !RegExp($('#txtUsername').val()).test(password), !RegExp("cisco").test(password), 
      !RegExp(/([a-z]|[0-9])\1\1\1/).test(password), (password.length > 7) 
     ] 

     $.each(validation, function(i){ 
      if(this == true) 
       $('.form table tr').eq(i+1).attr('class', 'check'); 
      else{ 
       $('.form table tr').eq(i+1).attr('class', ''); 
       valid = false 
      } 
     }); 

     return(valid); 

    } 
+0

Ich bin nicht sicher, ob dies der Fehler ist, aber ich sehe, dass die Regex RegExp („12345678“) konnte keine Trennzeichen haben, dass es sein ? – rednaw

+0

Was ist los mit '/^[\ d \ w] + $/i'? – Alexander

+0

@rednaw gibt es keinen Fehler in dem vorliegenden Code, eine neue Anforderung muss implementiert werden. Basierend auf der Antwort unten sieht es so aus, als ob ich etwas wie '/^[^ a-z]. * /' Brauche, aber ich muss auch Zahlen einfügen. Mit anderen Worten, ich stelle sicher, dass das Passwort mit einem Buchstaben oder einer Zahl beginnt und endet. – pixelbobby

Antwort

12

EDIT: Der reguläre Ausdruck Sie wollen, ist: -

/^[a-zA-Z0-9](.*[a-zA-Z0-9])?$/ 

Zusätzliche Informationen

In regulären Ausdrücken ^ bedeutet 'Anfang String' und $ bedeutet ‚Ende von String ', so zum Beispiel: -

/^something$/ 

Spiele

'something' 

Aber nicht

'This is a string containing something and some other stuff' 

Sie können Zeichen negieren [^-char to negate-] verwenden, so

/^[^#&].*/ 

Spiele eine beliebige Zeichenfolge, die nicht mit einem # oder beginnt &

+0

Diese Antwort war immer noch sehr hilfreich. – pixelbobby

+0

Ich werde @ rgvcorley die Antwort geben, weil er die meiste Mühe hat und die erste Antwort war, obwohl rednaw die Antwort (nah) und schnell bekam. – pixelbobby

1

sollten Diese Regex sein, was Sie wollen:

/^[0-9a-z].*[0-9a-z]$/ 
+0

JA! '^ [0-9a-zA-Z]. * [0-9a-zA-Z] $' – pixelbobby

+1

Dies würde keine Zeichenfolge wie 'p' oder '1' entsprechen, die sowohl in einem Zeichen als auch in einer Zahl beginnen und enden – rgvcorley

+0

Sind Sie sicher? Ich habe den Ausdruck in meinem Kommentar oben auf RegExr getestet und es passierte folgendes: password1, password, 1password ... – pixelbobby

Verwandte Themen