Ergebnis 1 bis 11 von 11
  1. #1
    Johannes1984 ist offline Jungspund
    registriert
    04-02-2010
    Beiträge
    17

    RegExp.test(string): funktioniert nicht bei klammern im string

    Hallo,

    ich habe bei folgendem Code ein Problem:

    d[0] = "lateral rotation(deg)";
    Spaltenueberschrift = new RegExp("rotation(deg)");
    alert(Spaltenueberschrift.test(d[0]));

    ich möchte das Element 0 vom Array d darauf testen, ob der String "rotation(deg)" enthalten ist. Das Problem ist, dass mir false zurückgeliefert wird, und zwar nur, weil ich im string von RegExp eine Klammer enthalten habe. Teste ich so:
    Spaltenueberschrift = new RegExp("rotation");
    also ohne diese Klammern, wird true zurückgeliefert. Weiß jemand, warum es mit den Klammern im String nicht funktioniert?

  2. #2
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    du musst die Klammer escapen:
    \(deg\)

  3. #3
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.664

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    Klammern sind in RegExp ein Indikator zum Cachen eines Teiles oder zu Gruppierung: http://msdn.microsoft.com/de-de/library/ae5bf541.aspx
    Wenn du nach einem einfachen String suchen willst ist indexOf besser.

  4. #4
    Johannes1984 ist offline Jungspund
    registriert
    04-02-2010
    Beiträge
    17

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    danke für die Begründung mit den Klammern und den Link, der mir sicher noch helfen wird.

    Dieses Escapen der Klammern sollte eigentlich klappen, komischerweise funktioniert es bei mir überhaupt nicht.

    Spaltenueberschrift = new RegExp("rotation\(deg\)");

    Wenn ich es so schreibe, wird trotzdem FALSE zurückgegeben, obwohl es nach der Theorie stimmen sollte.

    Habe ich die Klammern oder gar keine Klammern, also folgende Fälle:

    Spaltenueberschrift = new RegExp("(deg)");
    Spaltenueberschrift = new RegExp("\(deg\)");
    Spaltenueberschrift = new RegExp("rotation");

    dann wird immer TRUE zurückgegeben. Versteh ich nicht.
    Aber zumindest hilft mir die Begründung schon mal gut weiter, dass Klammern beim RegExp zum Cachen und Gruppieren genutzt werden.

    Ich werde jetzt wohl wirklich IndexOf verwenden. Mir hat das zuerst nicht so gefallen, weil ich da ja Zahlen als Rückgabewerte habe und nicht den Datentyp Boolean. Aber ich mach jetzt einfach ne if-Abfrage, ob der Rückgabewert >= 0 ist, dann sollte es auch gehen.
    Also vielen Dank nochmal.

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.664

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    Code:
    alert("(deg)");
    alert("\(deg\)");
    alert("\\(deg\\)");
    Bitte fragen, wenn dir jetzt der Unterschied nicht klar ist.

  6. #6
    Johannes1984 ist offline Jungspund
    registriert
    04-02-2010
    Beiträge
    17

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    alert("\\(deg\\)");

    Mit diesen 2 Backslashs klappt es nun tatsächlich. Aber warum muss ich 2 Backslashs verwenden?

    Im Beispiel von Junkee und in dem Link, den du mir geschickt hast, ist immer nur 1 Backslash zu sehen.

  7. #7
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    Code:
    var reg1 = /\(hallo\)/;
    var reg2 = new RegExp("\\(hallo\\)");
    Das regexp muss am ande aussehen wie reg1 aber ein backslash maskiert im string das nächste Zeichen. Wenn du in einem String ein Backslash willst muss du ihn maskieren => \\

  8. #8
    Johannes1984 ist offline Jungspund
    registriert
    04-02-2010
    Beiträge
    17

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    Also ich brauche einen Backslash, um die Klammer zu maskieren und noch einen Backslash, um diesen Backslash für die Klammer zu maskieren?

  9. #9
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    jup

  10. #10
    Johannes1984 ist offline Jungspund
    registriert
    04-02-2010
    Beiträge
    17

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    ok, jetzt habe ich es verstanden, danke fürs Erklären

  11. #11
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: RegExp.test(string): funktioniert nicht bei klammern im string

    bitte.

Ähnliche Themen

  1. Variable mehrmals in String ersetzen?
    Von stash im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 11-11-2009, 18:01
  2. Antworten: 13
    Letzter Beitrag: 03-09-2009, 11:03
  3. VOKALE umkehren funktion funktioniert nur bei string
    Von silent321 im Forum Serverseitige Programmierung
    Antworten: 8
    Letzter Beitrag: 02-06-2009, 16:15
  4. String Replace funktioniert nur 1x im IE7
    Von TimoK im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 21-10-2008, 16:05
  5. Prüfen, ob ein String einen anderen String enthält
    Von citrusfrucht im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 06-02-2008, 11:00

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •