Warum das Ausrufezeichen in einer anderen StackOverflow-Buchung mit der Telefonnummer REGEX?

8

In Eine umfassende Regex für die Überprüfung der Telefonnummer , die akzeptiert Antwort hat eine Reihe von Kommentaren. Einer der Kommentare von @jcmcbeth schlägt den folgenden einfachen regulären Ausdruck vor, der verwendet werden soll, um die Ziffern der von einem Benutzer übermittelten Telefonnummer zu erhalten:

%Vor%

Unmittelbar nach dem Kommentar mit diesem vorgeschlagenen regulären Ausdruck fragt ein anderer Fragender why the !x part? , was dann im nächsten Kommentar beantwortet wird: The !x is there to keep any "x" character from getting stripped .

Das macht für mich Sinn, bis auf das Ausrufezeichen ! . Wenn ich mir die Dokumentation für Zeichenklassen in regulären Ausdrücken ansehe, sehe ich nicht, dass das Ausrufezeichen ein Sonderzeichen ist, und es scheint mir nicht, dass für x ein vorheriges Sonderzeichen erforderlich ist. Aus der Diskussion in der verknüpften Frage sehe ich auch keinen Kommentar, der darauf hinweist, dass ein Ausrufezeichen Teil einer Telefonnummer sein könnte (was seine Einbeziehung in die Klasse negierter Zeichen erklären würde).

Kann mir bitte jemand erklären, warum das Ausrufezeichen vorhanden ist? Danke.

    
Dan Nissenbaum 26.04.2012, 19:45
quelle

2 Antworten

7

Du hast absolut recht, das x ist ausreichend. ! entspricht nur einem Literal ! innerhalb einer Zeichenklasse oder out. Der einzige Ort, an dem es eine besondere Bedeutung hat, ist, wenn es Teil eines negativen Lookahead oder eines negativen Lookbehinds ist.

    
Alan Moore 26.04.2012, 21:01
quelle
-3

Sicherlich bedeutet [^\d+!x] "NICHT '\' , NICHT 'd' , NICHT '+' , NICHT '!' und NOT 'x' ".

[ ] ist eine Zeichengruppe.

[^ ] negiert die Liste der Zeichen.

    
g1smd 06.07.2012 19:11
quelle

Tags und Links