Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Analyse regulärer Ausdrücke zum Abgleichen numerischer und alphabetischer Passwörter

Eine kurze Analyse regulärer Ausdrücke zum Abgleichen numerischer und alphabetischer Passwörter

微波
微波Original
2017-06-28 13:30:441105Durchsuche

Als ich kürzlich an einem Projekt arbeitete, stieß ich auf eine solche Anforderung, die erforderte, dass es aus Zahlen und Buchstaben bestehen musste, sowohl Zahlen als auch Buchstaben enthalten sollte und die Länge zwischen 8 und 16 Ziffern liegen sollte. Lassen Sie mich Ihnen den Implementierungscode mitteilen.

Ein Passwort für die Funktion Benutzerregistrierung muss aus Zahlen und Buchstaben bestehen und enthalten sowohl Zahlen als auch Buchstaben und müssen eine bestimmte Länge zwischen 8 und 16 Bit haben.

Wie analysiert man Anforderungen? Teilt! Dies ist die allgemeine Idee des Softwaredesigns. Seitdem lauten die Aufteilungsanforderungen wie folgt:

1, es dürfen nicht alle Zahlen sein

2, es dürfen nicht alle Buchstaben sein

3, es müssen Zahlen oder Buchstaben sein

Solange die oben genannten drei Anforderungen gleichzeitig erfüllt werden können, schreiben Sie es wie folgt auf:

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$

Kommentieren Sie es separat:

^ Passen Sie den Anfang einer Zeile an

( ?![0-9]+$) Sagt voraus, dass nicht alle Zahlen dieser Position folgen.

(?![a-zA-Z]+$) Sagt voraus, dass nicht alle Buchstaben folgen diese Position

[ 0-9A-Za-z] {8,16} besteht aus 8-16 Ziffern oder Buchstaben

$ entspricht dem Ende der Zeile

Hinweis: (?!xxxx) Es handelt sich um eine Form der negativen Nullbreitenbehauptung des regulären Ausdrucks , die angibt, dass das Zeichen nach der voreingestellten Position nicht xxxx ist.

Die Testbeispiele lauten wie folgt:

public class Test {
  public static void main(String[] args) throws Exception {
    String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";    
    String value = "aaa"; // 长度不够
    System.out.println(value.matches(regex));
    value = "1111aaaa1111aaaaa"; // 太长
    System.out.println(value.matches(regex));
    value = "111111111"; // 纯数字
    System.out.println(value.matches(regex));
    value = "aaaaaaaaa"; // 纯字母
    System.out.println(value.matches(regex));
    value = "####@@@@#"; // 特殊字符
    System.out.println(value.matches(regex));
    value = "1111aaaa"; // 数字字母组合
    System.out.println(value.matches(regex));
    value = "aaaa1111"; // 数字字母组合
    System.out.println(value.matches(regex));
    value = "aa1111aa";  // 数字字母组合
    System.out.println(value.matches(regex));
    value = "11aaaa11";  // 数字字母组合
    System.out.println(value.matches(regex));
    value = "aa11aa11"; // 数字字母组合
    System.out.println(value.matches(regex));
  }
}

Das Obige ist ein regulärer Ausdruck, den der Editor Ihnen vorstellt, um numerische und alphabetische Passwörter abzugleichen. Ich hoffe, dass er hilfreich ist Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten.

Das obige ist der detaillierte Inhalt vonEine kurze Analyse regulärer Ausdrücke zum Abgleichen numerischer und alphabetischer Passwörter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn