2012-04-04 23 views
0

Ich erstelle eine Javascript-Regex, um Abfragen in einer Suchmaschine Zeichenfolge zu entsprechen. Ich habe ein Problem mit dem Wechsel. Ich habe die folgende Regex:Javascript regulären Ausdruck Alternation

.*baidu.com.*[/?].*wd{1}= 

Ich möchte in der Lage sein Strings übereinstimmen, die die Zeichenfolge ‚Wort‘ oder ‚QW‘ zusätzlich zu ‚wd‘, aber alles, was ich versuche, ist nicht erfolgreich. Ich dachte, ich könnte etwas wie das Folgende tun:

.*baidu.com.*[/?].*[wd|word|qw]{1}= 

aber es scheint nicht zu funktionieren.

+1

'[]' erstellt eine Zeichenklasse, verwenden Sie stattdessen '(wd | word | qw)' '. Befreien Sie sich auch davon, {1} ', es ist nutzlos. – NullUserException

+0

Ein wenig mehr Kontext zu dem, was Sie erreichen möchten, würde uns helfen, Ihnen viel mehr zu helfen: D –

Antwort

3

ersetzen [wd|word|qw] mit (wd|word|qw).

[] bezeichnet Zeichensätze, () bezeichnet logische Gruppierungen.

+0

+1, aber ... gehen Sie einen Schritt weiter, könnten Sie "ersetzen" (wd | Wort | qw) ' mit 'qw | w (?: oder)? d'" – zx81

2

Ihr Ausdruck:

.*baidu.com.*[/?].*[wd|word|qw]{1}= 

ein paar Änderungen braucht, einschließlich [wd|word|qw]-(wd|word|qw)und der redundanten {1} loszuwerden, etwa so:

.*baidu.com.*[/?].*(wd|word|qw)= 

Aber Sie müssen auch verstehen, dass der erste Teil Ihres Ausdrucks (.*baidu.com.*[/?].*) mit baidu.com hello what spelling/handle????????? oder hbaidu-com/ übereinstimmt oder sogar etwas Ähnliches e lkas----jhdf [email protected]@!3hdsfbaidugcomlaksjhdf.[($?lakshf, da der Punkt (.) alle Zeichen außer Zeilenumbrüchen übereinstimmt ... einen wörtlichen Punkt zu entsprechen, haben Sie es mit einem Backslash zu entkommen (wie \.)

Es gibt mehrere Ansätze, die Sie Dinge passen nehmen könnten in eine URL, aber wir könnten Ihnen mehr helfen, wenn Sie uns sagen, was Sie zu tun versuchen oder zu erreichen - vielleicht Regex ist nicht die beste Lösung oder (EDIT) nur Teil der besten Lösung?