2017-06-28 1 views
2

Ich versuche herauszufinden, wie man die richtige Regex schreiben, so wenn jquery DataTables eine Spalte sucht findet es genaue Übereinstimmungen. Ich habe Werte von C-, C +, C und wenn jemand "C" klickt, brauche ich nur exakte Übereinstimmungen von C und nicht die anderen 2.Regex Ausdruck für exakte Übereinstimmung auf mehrere

Wenn sie C- und C wählen, sollte es alle Einträge mit entweder 2, aber C + sollte nicht enthalten sein.

Ich versuchte Regex von: "C- | C +", aber es packt auch alle C.

Hier ist der Code, den ich habe die Schaffung dieses regex:

$("input[name='tourneyLevel']").on("change", function(e) { 
    var levelSelected = []; 
    $("input[name='tourneyLevel']:checked").each(function(index, city) { 
     levelSelected.push([$(this).val()]); 
    }); 

    var regex = levelSelected.join("|"); 
    console.log(regex); 

    $('.dataTable').DataTable().column(4).search(regex, true, false).draw(); 
}); 

Antwort

4

"+" und "-" sind in der Regel eine besondere Bedeutung in RegEx haben. Wenn Sie Ihre RegEx erstellen, versuchen Sie, sie zu umgehen, und fügen Sie die Phrasen in eine Gruppe ein, um die gesamte Gruppe zu erreichen.

Ihr Benutzer sucht also nach "C +"?

(C\+)

Ihre Benutzer die Suche nach "C" oder "C"?

(C\-)|(C)

Ihre Benutzer die Suche nach "C" oder "C +"?

(C\-)|(C\+)

Ihre Benutzer für eine der drei Möglichkeiten suchen?

(C\-)|(C)|(C\+)

Das Plus-Zeichen bedeutet normalerweise „ein oder mehrere der vorhergehenden Gruppe“. Ein Minus wird oft in Bereichen verwendet oder um Dinge auszuschließen. Sei vorsichtig bei der Suche nach diesen Sonderzeichen. Und wenn Sie nach mehreren Zeichen in einer bestimmten Reihenfolge suchen, sollten Sie versuchen, sie in Klammern zu gruppieren.

Darüber hinaus wird der umgekehrte Schrägstrich verwendet, um Zeichen in einer Zeichenfolge zu entkommen. Wenn Sie ein RegEx durch Verketten von Zeichenfolgen konstruieren, müssen Sie den umgekehrten Schrägstrich mit einem zweiten umgekehrten Schrägstrich abbrechen, sodass die resultierende RegEx einen einzelnen umgekehrten Schrägstrich enthält. Dies klingt kompliziert, aber es läuft auf:

Verwenden Sie zwei umgekehrte Schrägstriche, um ein Zeichen in Ihrer RegEx zu entkommen, wenn Sie die RegEx durch Verketten von Zeichenfolgen erstellen.

Um sicherzustellen, dass nur diese spezifische Sequenz, die Sie zwei weitere wichtige Sonderzeichen verwenden können, abgestimmt ist:

  • ^ für den Start
  • $ für das Ende

Zum Beispiel können Sie Verwenden Sie die RegEx (^C$), um nur genau ein einzelnes "C" zu finden. Die Sequenz beginnt, enthält genau das Zeichen "C" und endet mit dieser RegEx.

+0

ok also habe ich einige if else-Anweisungen für Checkboxen, um diese Regex zu generieren, aber es scheint immer noch andere Werte zu ziehen. Wenn ich nach C- und C + suchte, packte es alle C ... die Regex, die es ausspuckte, war: (C-) | (C +) – Chief

+0

(C) zieht immer noch alle 3 Werte: C, C- und C + ... ..Nicht sicher, ob es ein Problem mit Datentabellen oder meinem Regex immer noch ist – Chief

+1

@Chief Denken Sie daran, dass das Plus und Minus muss entkommen. Wenn also die Regex (C +) ist, wird es nicht wie vorgesehen funktionieren. Es muss (C \ +) sein. Versuchen Sie, den Backslash in Ihren Strings zu umgehen, sodass Sie etwas wie (C \\ +) schreiben, was zu einem Regex wie (C \ +) führen kann. – Secespitus

Verwandte Themen