WernerK: Text zwischen Klammern finden

Hallo,
ich habe bisher noch nicht so viel mit RegEx und JS gemacht.
ich versuche einen Text zwischen Runden Klammern zu finden um ihn später weiter zu verarbeiten.
Ich versuche es gerade so:

var txt = "This is (my) simple text";
re = /((.*))/;
var Ausgabe = txt.match(re);​

alert(Ausgabe);

Hier bringt der Firebug jedoch "Illegal Character"
Ich verstehe jedoch nicht warum?

Ich hätte gerne als Ausgabe nur "my"

Gruss
Werner

  1. hi,

    Hallo,
    ich habe bisher noch nicht so viel mit RegEx und JS gemacht.
    ich versuche einen Text zwischen Runden Klammern zu finden um ihn später weiter zu verarbeiten.
    Ich versuche es gerade so:

    var txt = "This is (my) simple text";
    re = /((.*))/;
    var Ausgabe = txt.match(re);​

    alert(Ausgabe);

    Hier bringt der Firebug jedoch "Illegal Character"
    Ich verstehe jedoch nicht warum?

    Ich hätte gerne als Ausgabe nur "my"

    Wenn ich o.g. kopiere ist ein meinem Editor ein Fragezeichen hinter dem (re); also (re);?

    Das hier funzt:

      
    <script>  
    [code lang=javascript]  
    var txt = "This is (my) simple text";  
    re = /\((.*)\)/;  
    var Ausgabe = txt.match(re);  
      
    alert(Ausgabe);  
    
    

    </script>
    [/code]

    Ergebnis: (my),my

    mfg

    tami

    1. Danke euch beiden.
      Da war tatsächlich ein Zeichen. Nach dem entfernen geht es bei mir auch.
      Mein Editor hat es nicht angezeigt.

      Gruss
      Werner

      1. Noch ein Sache habe ich.
        Bei der Suche zwischen den Klammern bekomme ich zwei Zahlen zurück.

        (80,9-105,0 Gramm)

        Gibt es eine Möglichkeit diese Zahlen zu runden? Ich schaffe das zwar mit
        Math.round(x) aber nur wenn anstatt eines Kommas ein Punkt steht.
        Mit parseInt(x) klappt es zwar aber aus 80,9 wird immer 80.
        Wäre nicht so schlimm. Aber gibt es vielleicht auch eine Möglichkeit daraus 81 zu machen?

        Gruss
        Werner

        1. Meine Herren,

          Noch ein Sache habe ich.
          Bei der Suche zwischen den Klammern bekomme ich zwei Zahlen zurück.

          (80,9-105,0 Gramm)

          Gibt es eine Möglichkeit diese Zahlen zu runden? Ich schaffe das zwar mit
          Math.round(x) aber nur wenn anstatt eines Kommas ein Punkt steht.

          Dann ersetze doch das Komma vorher durch einen Punkt.

          Mit parseInt(x) klappt es zwar aber aus 80,9 wird immer 80.

          Das liegt daran, dass parseInt nicht versucht zu runden. Es liest den String und bricht die Zahlenumwandlung beim ersten Zeichen, das keine Ziffer ist, ab.

          parseInt("42abcd"); // 42

          Wäre nicht so schlimm. Aber gibt es vielleicht auch eine Möglichkeit daraus 81 zu machen?

          var eingabe = "80,9";  
          eingabe = eingabe.replace(",",".");  
          eingabe = Number( eingabe );  
          eingabe = Math.round( eingabe );
          

          Für den Fall, dass mit unterschiedlichen Formaten zu rechnen ist wäre der NumberFormat-Konstruktor [mdn] vorzuziehen.

          Dabei sollte man aber auf die schlechte Browserunterstützung (kein Firefox, kein Safari) Rücksicht nehmen.

          --
          Hey Girl,
          i wish you were asynchronous, so you'd give me a callback.
          1. Meine Herren,

            Für den Fall, dass mit unterschiedlichen Formaten zu rechnen ist wäre der NumberFormat-Konstruktor [mdn] vorzuziehen.

            Ich muss mich korrigieren. NumberFormat arbeitet in die andere Richtung und erzeugt aus Zahlen Strings.

      2. @@WernerK:

        nuqneH

        Danke euch beiden.
        Da war tatsächlich ein Zeichen. Nach dem entfernen geht es bei mir auch.
        Mein Editor hat es nicht angezeigt.

        Doch, hat er. Du hast es nur nicht gesehen.

        Was soll bei U+200B ZERO WIDTH SPACE auch zu sehen sein?

        Nachprüfen kannst du das, indem du den String in ein Tool wie Richard Ishidas Code Converter oder String analyser (der im Moment gerade irgendwelche Probleme hat) jagst.

        Qapla'

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  2. Hi,

    var txt = "This is (my) simple text";
    re = /((.*))/;
    var Ausgabe = txt.match(re);​

    alert(Ausgabe);

    Hier bringt der Firebug jedoch "Illegal Character"

    damit meint er vermutlich das Zeichen hinter "txt.match(re);", was immer das sein mag - bei mir wird es nur als Kästchen dargestellt.

    Ciao,
     Martin

    --
    Hannes würfelt abends immer, ob er den Abend mit seiner Frau zuhause verbringt oder in die Kneipe geht. Wenn er eine 6 würfelt, geht er in die Kneipe.
    Gestern musste er 37mal würfeln.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  3. @@WernerK:

    nuqneH

    var txt = "This is (my) simple text";

    re = /((.*))/;

      
    Von deinem Illegal-Character-Problem hast du noch ein anderes: Der Ausdruck tut nicht das, was du (vermutlich willst)  
      
    `var txt = "This is (my) simple (sample) text";`{:.language-javascript} → Ausgabe: my) simple (sample  
      
    Vermutlich nicht das, was du willst.  
      
    Nicht nach allen Zeichen zu suchen, sondern nach allen <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title=außer> ')' könnte helfen.  
      
    Qapla'
    
    -- 
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    
  4. Hallo,

    allen nochmals Dank für die Tipps.
    Jetzt bin ich schon weiter gekommen.

    Eine Kleinigkeit noch wo ich trotz Google nicht weiterkomme.

    Ergebnis = option.match(/MeinSuchWort/);

    Ich möchte jedoch "MeinSuchwort" dynamisch durch eine Variable ersezten.

    also;

    var searchfor = "MeinSuchWort";
    Ergebnis = option.match(/ + searchfor + /);

    So klappt es ja leider nicht (mit dem + verketten)

    Wie kann man hier die Variable einsetzen?

    Gruss
    Werner

    1. @@WernerK:

      nuqneH

      Ich möchte jedoch "MeinSuchwort" dynamisch durch eine Variable ersezten.

      „Das ist hier eine sehr häufig gestellte Frage.“ [molily]

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)