2009-06-10 12 views
0

Wie kann es sein, dass dieser reguläre Ausdruck auch Zeichenfolgen zurückgibt, die einen _ Unterstrich als letztes Zeichen haben?Regulärer Ausdruck funktioniert nicht wie erwartet

Es sollte nur Strings mit alphabetischen Zeichen, gemischte Groß- und Kleinbuchstaben zurückgeben.

However, the regular expression returns: 'action_'

$regEx = '/^([a-zA-Z])[a-zA-Z]*[\S]$|^([a-zA-Z])*[\S]$|^[a-zA-Z]*[\S]$/'; 
+1

Was versuchen Sie mit Ihrem Ausdruck zu erreichen? –

+0

Warum erscheint \ S in eckigen Klammern? Definiert das nicht eine Zeichenklasse mit zwei Zeichen, "\" und "S"? – Benson

+3

Das ist ein merkwürdiges RE: Sie haben 3 Alternativen und die 2. und 3. Alternativen sind genau gleich, also wird die 3. Alternative niemals übereinstimmen, denn wenn es möglich ist, wird die 2. Alternative bereits übereinstimmen. Auch die zweite Alternative wird nur zusammenpassen, wenn der ([a-zA-Z]) * -Teil mit nichts übereinstimmt, andernfalls wird die erste Alternative übereinstimmen. –

Antwort

2

Die [\S] wird alles passen, die nicht Leerzeichen, einschließlich Unterstrich.


Auch ist Ihr Ausdruck sehr seltsam!

Wenn Sie eine Zeichenfolge möchten, die nur Buchstaben enthält, verwenden Sie ^[a-zA-Z]*$ oder ^[a-zA-Z]+$ (abhängig davon, ob ein Leerzeichen erlaubt ist oder nicht).

Wenn Sie versuchen, etwas anderes zu tun, müssen Sie erweitern, was das ist.

+1

/s Kleinbuchstaben bedeutet Leerzeichen – Brabster

+0

Fast. \ s Kleinbuchstaben bedeutet Leerzeichen - beachten Sie die Schrägstrichrichtung. –

+0

Tut mir leid! Lustiges mobiles Tastaturlayout! – Brabster

5

Da \ S bedeutet "nicht Leerzeichen", \ S entspricht _

Eine Gruppe soll einen Unterstrich allerdings nicht haben, also, wenn Sie bedeuten, dass, könnte es sein, dass Du bekommst das ganze Spiel zurück und nicht nur die erste Gruppe.

Bitte zeigen Sie, wie Sie die Regex verwenden, um dies bei Bedarf zu verdeutlichen.

0

\ S passt zu jedem Nicht-Leerzeichen char - so _

0

Sie sollten den Text anzeigen und welchen Teil davon möchten Sie daraus extrahieren. Regulärer Ausdruck sollte nicht so groß sein wie deins.

Arbeiten Sie kleine Ausdruck Chargen ... Bei dieser Größe ist es sehr schwierig, Ihnen zu helfen.

Verwandte Themen