2016-04-02 14 views
2

Ich versuche, einen HSTS-Header zu validieren.Regex: Max-Alter Wert

Es gibt zwei Szenarien, die zum Testen brauchen:

  1. Multiple Max-Alten Wert zB max-age=342343; max-age=234234

Folgende funktioniert nur, wenn es kein „;“ -Wert zwischen dem max-im Alter von zwei ist . Das ist ein Problem ....

  1. Der zweite ist, wo das Max-Alter enthält Ziffern und andere Zeichen, zB max-age=324A oder max-age=534A;

    var string = 'max-age=3423A42; preload'; 
    
    var multipleMaxAge = string.match(/max-age=([0-9]+)/gi).length; 
    var invalidMaxAge = string.match(/max-age=(.*\D+.*$);?/gi); 
    
    if (invalidMaxAge){ 
        alert("Max-age Can only be digits... error"); 
    } 
    if (multipleMaxAge != 1){ 
        alert("Multiple Maximum Ages!"); 
    } 
    

Wie würde ich die Regex Muster Spiel erhalten mit oder ohne ; am Ende ...

Danke,

+0

Möchten Sie die komplette Zeile 'max-age = 342343; Höchstalter = 234234'? oder nur so viel 'max-age = 342343;' – rock321987

+0

Ich möchte beide zusammenbringen, aber in zwei verschiedenen Strings. – user3853149

+0

wont 'max-age = (?: [0-9] +) ;? – rock321987

Antwort

1

Versuchen Sie max-age=([0-9]+)[\s;].

Die [\s;] bedeutet, dass das nächste Zeichen nach Ihrer Nummer ein Leerzeichen oder ; sein wird.

Es sollte das Problem beheben, das Sie mit zufälligen Buchstaben auch haben.

+0

Das funktioniert, aber wie würde das ';' optional sein. – user3853149

+0

@ user3853149 Ich nahm an, dass Ihre Daten möglicherweise durch Leerzeichen getrennt sind wie: 'max-age = 342342 preload' – Laurel

+1

Es ist Leerzeichen, aber das"; " ist optional. Es könnte entweder sein 'max-age = 34234; preload' ODER 'max-age = 3243242 preload' – user3853149