2010-02-25 23 views
39

Ich bin nicht sicher, wie ich diesen Übereinstimmungsausdruck erzielen kann. Derzeit verwende ich,Regex Buchstaben, Zahlen, Bindestriche und Unterstriche

([A-Za-z0-9-]+) 

... die Buchstaben und Zahlen entspricht. Ich möchte auch auf Bindestriche und Unterstriche im selben Ausdruck übereinstimmen. Wer weiß wie?

Ich möchte in der Lage sein product_name und Produkt-Name übereinstimmen

Antwort

70

einfach die Striche entkommen, damit sie nicht interpretiert werden (ich glaube nicht, Strich Bedürfnisse zu entkommen, aber es kann nicht schaden). Sie sagen nicht, welche Regex Sie verwenden.

([A-Za-z0-9\-\_]+) 
+0

Wie kann ich im Nachhinein die obigen Regeln unter Ausschluss von Perioden anwenden? Ich würde gerne ignorieren, zum Beispiel, image.png –

+4

@George: Diese Regex passt bereits Perioden nicht. –

+1

@George Bitte stellen Sie keine weiteren Fragen, außer für neue Fragen. Kommentare sind nicht dafür; Antworten sind nicht dafür; Wenn Sie eine neue Frage haben, stellen Sie eine neue Frage. –

21

Ihr Ausdruck sollte bereits Striche übereinstimmen, da die letzte - nicht als Bereichsoperator interpretiert werden (da der Bereich nicht hat Ende). Um Unterstrichen auch hinzufügen, versuchen:

([A-Za-z0-9_-]+) 
9

Je nach regex Variante, können Sie möglicherweise einfach, dies zu tun:

([\w-]+) 

Auch Sie wahrscheinlich die Klammern nicht brauchen, es sei denn dies Teil eines größeren Ausdrucks ist.

+0

Dies ist für eine .htaccess-Datei, also brauche ich die Klammern, wie Sie gesagt haben, ist es in einem größeren Ausdruck :) –

+0

Dies funktionierte für mich, und ich denke, es ist ein wenig sauberer mit der Wort-Verknüpfung. Eigentlich habe ich [\ w -] * –

0

Sie können in der Tat alle diese Zeichen übereinstimmen, aber es ist sicherer, die - zu entkommen, so dass es klar ist, dass es wörtlich genommen wird.

Wenn Sie eine POSIX variant verwenden, können Sie verwenden entscheiden:

([[:alnum:]\-_]+)

Aber ein, da Sie den Unterstrich sind einschließlich würde ich einfach nutzen:

([\w\-]+)

(arbeitet in alle Varianten)

Verwandte Themen