susi: replace mit javascript?

hallo,

ich lade folgenden string in javascript:

[CODE]
<span id="description">#DESC#</span><spanclass="profile_name">#NAME#<span></br>
[/CODE]

dies ist so eine art template engine für JS nur zur erklärung ...

in JS hab ich nun folgenden code:
[CODE]
 str+= template_tmp.replace(/\b#NAME#\b/, Data[i].value);
 str+= template_tmp.replace(/\b#DESC#\b/, Data[i].description);
[/CODE]

nur ...

es wird nicht replaced?
wo liegt der fehler, leider bin ich nicht so der regEx checker, aber vielleicht jemand von hier?

bussi, susi

  1. hi,

    <span id="description">#DESC#</span><spanclass="profile_name">#NAME#<span></br>
    str+= template_tmp.replace(/\b#NAME#\b/, Data[i].value);

    Und du bist sicher, dass > und < als Wortgrenze gelten?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. str+= template_tmp.replace(/\b#NAME#\b/, Data[i].value);

      Und du bist sicher, dass > und < als Wortgrenze gelten?

      was?
      \b sind die wortgrenzen!
      warum sollten >< die wortgrenzen sein?

      lg, susi

      1. hi,

        Und du bist sicher, dass > und < als Wortgrenze gelten?
        was?

        Oh man ... drücke ich mich so kompliziert aus - oder bist du so blond?

        \b sind die wortgrenzen!

        Ja genau, diese Zeichen in deinem Suchausdruck _verlangen_, dass sich vor und nach #xyz# eine Wortgrenze befinden _muss_.

        warum sollten >< die wortgrenzen sein?

        Weil diese Zeichen in deinem Text, den du durchsuchen willst, vor und hinter dem #yxz# stehen.
        Also müssten > und < vom regulären Ausdruck als Wortgrenze erkannt werden, damit er auf deinen Text zutreffen kann.

        Und deshalb die Frage, ob du das überprüft, oder irgendwo in der Spezifikation nachgeschlagen hast?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. das braucht "er" gar nicht prüfen!
          #MARKER# soll ersetzt werden da ist ihm ja der urspungstext vollends egal ...

          aber die lösung lautet, da ich sie shcon von jemand anderem bekommen habe!

          str= template_tmp.replace(/#NAME#/gi, Data[i].value);
          str= str.replace(/#DESC#/gi, Data[i].description);

          dennoch danke ...
          und net immer gleich so angefressen udn überheblich reagieren ...
          ist nicht gut fürs herzal ...

          bussi susi

          1. hi,

            das braucht "er" gar nicht prüfen!

            Doch, das _musste_ "er", weil du es "ihm" so vorgeschrieben hast.

            #MARKER# soll ersetzt werden da ist ihm ja der urspungstext vollends egal ...

            Mädel, weißt du überhaupt, wo von du redest?

            Du willst _im_ Ursprungstext etwas ersetzen - wie kann da der Urpsrungstext "egal" sein?

            aber die lösung lautet, da ich sie shcon von jemand anderem bekommen habe!

            str= template_tmp.replace(/#NAME#/gi, Data[i].value);
            str= str.replace(/#DESC#/gi, Data[i].description);

            Na also, jetzt hast du also die unsinnige Bedingung, dass sich vor und nach #NAME# und #DESC# jeweils eine Wortgrenze befinden _muss_ - noch mal: diese Bedingung hattest _du selber_ formuliert - ja auch weggelassen.

            und net immer gleich so angefressen udn überheblich reagieren ...

            Und das nächste mal vielleicht etwas mehr Ahnung besorgen, bevor du so etwas versuchst.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. wenn ich mehr ahnung hätte müsste hich hier posten?

              und wenn ich gern was versuche dann mach ich dies auch ohne ahnung, du nicht?
              darum gibt es dieses forum doch, damit nicht jeder die weisheit mit dem löffel zu sich nehmen muss bzw. dies auch nicht kann.

              ich kann es nicht ... du?
              und "_JA BURSCHI_" ich weiss auch bei meinem kompetenzbereich von was ich rede, bei diesem problem jedoch nicht!

              also cool down und danke nochmals ...

              lg, susi

              1. Nur so zur Anmerkung. Wortgrenzen sind keine Zeichen. Demzufolge war susis Ansatz nicht falsch. Eher im Gegenteil. wahsaga lag mit seiner Vermutung, dass die Engine bei einer Wortgrenze auf die < und > anspringt, daneben.

                1. hi,

                  Nur so zur Anmerkung. Wortgrenzen sind keine Zeichen.

                  Sondern?

                  Demzufolge war susis Ansatz nicht falsch.

                  Doch, war er.

                  Eher im Gegenteil.

                  Nein.

                  wahsaga lag mit seiner Vermutung, dass die Engine bei einer Wortgrenze auf die < und > anspringt, daneben.

                  Und du liegst daneben, wenn du meinst, ich hätte das gesagt.

                  _Weil_ > und < eben _keine_ Wortgrenzen sind, konnte der Ausdruck, der nach #NAME# genau zwischen zwei Wortgrenzen suchte, keinen Treffer finden. _Weil_ sich nämlich davor und dahinter eben _keine_ Wortgrenzen befanden, sondern die Zeichen > und <.

                  gruß,
                  wahsaga

                  --
                  /voodoo.css:
                  #GeorgeWBush { position:absolute; bottom:-6ft; }
                  1. Auch hi

                    hi,
                    Sondern?

                    Metazeichen würde ich jetzt mal sagen. Bin mir gerade über den genauen Begriff nicht sicher.

                    Doch, war er.

                    Nein, war er nicht. Zumindest nicht der regex-Teil

                    Und du liegst daneben, wenn du meinst, ich hätte das gesagt.

                    Dann habe ich das möglicherweise falsch verstanden.

                    _Weil_ > und < eben _keine_ Wortgrenzen sind, konnte der Ausdruck, der nach #NAME# genau zwischen zwei Wortgrenzen suchte, keinen Treffer finden. _Weil_ sich nämlich davor und dahinter eben _keine_ Wortgrenzen befanden, sondern die Zeichen > und <.

                    Und genau da liegt der Fehler. Die Wortgrenze liegt zwischen dem > und #, weil es eben eine Wortgrenze ist und kein Zeichen. Deswegen hätte die Regex-Engine einen Treffer gefunden. Dass die beiden Wortgrenzen überflüssig waren ist ein anderes Thema, aber falsch waren sie nicht.

                    Gruß Ben

                    1. Und gleich ne Revidierung von mir. wahsaga hat doch Recht, shame on me. Natürlich hätte die Wortgrenze nicht auf >#NAME gematched. Man sollte genauer denken, bevor man was schreibt. Nachdem > keines der Zeichen darstellt die zu einer Wortgrenze führen.

                      Aber \b stellt wirklich kein Zeichen dar, zumindest das war an meiner Aussage korrekt.

                      Also sorry wahsaga, bin schon wieder ruhig :)

                      Gruß Ben

                      1. Hallo yetanotheruser.

                        Aber \b stellt wirklich kein Zeichen dar, zumindest das war an meiner Aussage korrekt.

                        Nö. \b entspricht z. B. „ “ oder auch „\n“. Beides sind gültige und sogar sichtbare Zeichen.

                        Einen schönen Dienstag noch.

                        Gruß, Ashura

                        --
                        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                        [HTML Design Constraints: Logical Markup]
                        1. Hallo yetanotheruser.

                          Aber \b stellt wirklich kein Zeichen dar, zumindest das war an meiner Aussage korrekt.

                          Nö. \b entspricht z. B. „ “ oder auch „\n“. Beides sind gültige und sogar sichtbare Zeichen.

                          Also hier bleibe ich stur. \b entspricht weder " " noch "\n".

                          Zitat aus der Regex Definition von Perl:

                          A word boundary (\b ) is a spot between two characters that has a \w  on one side of it and a \W  on the other side of it (in either order), counting the imaginary characters off the beginning and end of the string as matching a \W .

                          Das gleiche nochmal aus Wikipedia:

                          \b steht für die leere Zeichenkette am Wortanfang oder am Wortende

                          Und noch ein Quote aus O'Reillys "Reguläre Ausdrücke - kurz und gut"

                          Wortgrenze: \b, \B, <, >
                          Metazeichen für Wortgrenzen erkennen eine Position, an der ein Wortzeichen neben einem Nicht-Wortzeichen steht. ...

                          Wenn \b " " oder "\n" matchen würde, dann wäre das ganze Konstrukt sinnlos. Aber es wird eben genau das Nicht-Wortzeichen NICHT gematched.

                          Einen schönen Dienstag noch.

                          Ebenfalls.

                          Gruß Ben

                          1. Hallo yetanotheruser.

                            Wenn \b " " oder "\n" matchen würde, dann wäre das ganze Konstrukt sinnlos. Aber es wird eben genau das Nicht-Wortzeichen NICHT gematched.

                            Welches unter anderem „ “ und „\n“ sein können. Dass „\b“ nicht auf „ “ bzw. „\n“ allein matcht, hat auch niemand behauptet.

                            Einen schönen Dienstag noch.

                            Gruß, Ashura

                            --
                            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                            „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                            [HTML Design Constraints: Logical Markup]
                            1. hi,

                              Wenn \b " " oder "\n" matchen würde, dann wäre das ganze Konstrukt sinnlos. Aber es wird eben genau das Nicht-Wortzeichen NICHT gematched.

                              Welches unter anderem „ “ und „\n“ sein können. Dass „\b“ nicht auf „ “ bzw. „\n“ allein matcht, hat auch niemand behauptet.

                              Nein, yetanotheruser hat schon Recht:

                              \b matcht auf ein imaginäres Konstrukt - eben wie beschrieben die Grenze zwischen nicht-Wort-Zeichen und Wort-Zeichen - aber es matcht kein greifbares "Zeichen".

                              \b matcht nicht "auf" das Leezeichen oder den Zeilenumbruch - sonst müsstest du sie ja auch _ersetzen_ können, in dem du nach \b suchst.

                              Einfaches Beispiel:
                              javascript:alert('blah blubb'.replace(/\b/g, '#'))

                              gibt #blah# #blubb# aus - an den Wortgrenzen wurde # hinzugefügt, das Leerzeichen zwischen den Worten wurde aber _nicht_ ersetzt, sondern es wurde an den Wortgrenzen davor und dahinter # hinzugefügt.

                              Wenn \b wirklich auch auf Space oder Zeilenumbruch matchen würde - dann käme sich das arme \s ja ziemlich überflüssig vor, und das kann ja niemand wollen.

                              gruß,
                              wahsaga

                              --
                              /voodoo.css:
                              #GeorgeWBush { position:absolute; bottom:-6ft; }
                              1. Hallo wahsaga.

                                \b matcht auf ein imaginäres Konstrukt - eben wie beschrieben die Grenze zwischen nicht-Wort-Zeichen und Wort-Zeichen - aber es matcht kein greifbares "Zeichen".

                                Das habe ich auch nicht gemeint. Ich wollte zum Ausdruck bringen, dass \b unter anderem ein Leerzeichen, ein Zeilenumbruch, ein Tab u. A. sein kann, also welche Zeichen als Word-Boundary angesehen werden.

                                Dass man \b nicht einfangen kann, wollte ich auch nicht in Frage stellen.

                                Einen schönen Mittwoch noch.

                                Gruß, Ashura

                                --
                                sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                                „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                                [HTML Design Constraints: Logical Markup]
                                1. Hi,

                                  \b matcht auf ein imaginäres Konstrukt - eben wie beschrieben die Grenze zwischen nicht-Wort-Zeichen und Wort-Zeichen - aber es matcht kein greifbares "Zeichen".

                                  Das habe ich auch nicht gemeint. Ich wollte zum Ausdruck bringen, dass \b unter anderem ein Leerzeichen, ein Zeilenumbruch, ein Tab u. A. sein kann, also welche Zeichen als Word-Boundary angesehen werden.

                                  _Kein_ Zeichen wird als Word-Boundary angesehen.

                                  Eine Word-Boundary ist die _Position_ _zwischen_ _zwei_ _Zeichen_, von denen eines in \w und das andere in \W enthalten ist, bzw. die _Position_ vor einem Zeichen aus \w am Anfang bzw. die _Position_ nach einem Zeichen aus \w am Ende.
                                  (Anfang bzw. Ende beziehen sich dabei - abhängig vom Modus - nur auf String-Anfang bzw. -String-Ende oder zusätzlich auch auf Zeilen-Anfänge bzw. Zeilen-Enden innerhalb des Strings)

                                  cu,
                                  Andreas

                                  --
                                  Warum nennt sich Andreas hier MudGuard?
                                  Schreinerei Waechter
                                  O o ostern ...
                                  Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                                  1. Hallo MudGuard.

                                    _Kein_ Zeichen wird als Word-Boundary angesehen.

                                    Und was steht normalerweise zwischen Wörtern? Kein Zeichen, also nichts?
                                    Wenndemsowäresähedieshiersoaus.

                                    Eine Word-Boundary ist die _Position_ _zwischen_ _zwei_ _Zeichen_, von denen eines in \w und das andere in \W enthalten ist, bzw. die _Position_ vor einem Zeichen aus \w am Anfang bzw. die _Position_ nach einem Zeichen aus \w am Ende.

                                    Noch einmal: dies habe ich auch nie in Frage gestellt.

                                    Einen schönen Mittwoch noch.

                                    Gruß, Ashura

                                    --
                                    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                                    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                                    [HTML Design Constraints: Logical Markup]
                                    1. Hi,

                                      Und was steht normalerweise zwischen Wörtern?

                                      Das ist doch vollkommen irrelevant. Es geht ja nicht um das, was zwischen den Wörtern steht, sondern um word-boundaries, also die Grenzen eines Wortes.
                                      Bei Regulären Ausdrücken geht es bei Word-Boundaries eben NICHT um Zeichen, sondern um Positionen zwischen Zeichen (bzw. nur um Positionen, falls es um Zeilen- bzw. String- -Anfang bzw. -Ende geht)

                                      Noch einmal: dies habe ich auch nie in Frage gestellt.

                                      Doch, hast Du: Ich zitiere:

                                      Ich wollte zum Ausdruck bringen, dass \b unter anderem ein Leerzeichen, ein Zeilenumbruch, ein Tab u. A. sein kann, also welche Zeichen als Word-Boundary angesehen werden.

                                      "dass \b unter anderem ein Leerzeichen, ein Zeilenumbruch, ein Tab u. A. sein kann"
                                      oder auch
                                      "welche Zeichen als Word-Boundary angesehen werden" ist vollkommen falsch im Zusammenhang mit regulären Ausdrücken, da ja eben nicht Zeichen, sondern eine Position zwischen Zeichen (bzw. nur um Positionen, s.o.) die word-boundary darstellen.

                                      cu,
                                      Andreas

                                      --
                                      Warum nennt sich Andreas hier MudGuard?
                                      Schreinerei Waechter
                                      O o ostern ...
                                      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                                      1. Hallo MudGuard.

                                        "welche Zeichen als Word-Boundary angesehen werden" ist vollkommen falsch im Zusammenhang mit regulären Ausdrücken, da ja eben nicht Zeichen, sondern eine Position zwischen Zeichen (bzw. nur um Positionen, s.o.) die word-boundary darstellen.

                                        Ist gut, ich habe es verstanden.

                                        Einen schönen Mittwoch noch.

                                        Gruß, Ashura

                                        --
                                        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                                        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                                        [HTML Design Constraints: Logical Markup]