daniel_909: string() - Syntax

Hallo, ich habe mal wieder eine trotz Suche hier und im Web bisher unbeantwortete Frage.

Laut http://de.selfhtml.org/javascript/objekte/string.htm#search wird search mit einem regulären Ausdruck verwendet.
Also z.B. search(/abc/).

Jetzt hab ich aber irgendwo mal gelesen und mit IE sowie Firefox ausprobiert es geht auch so:
search("abc").

Ist das trotzdem okay, weil, wie ein regulärer Ausdruck sieht das letztere ja nun nicht gerade aus :o)?

Grüße, Daniel

  1. Hi,

    Ist das trotzdem okay,

    Ja!

    AFAIR sagt SELFHTML z.B. auch nicht, daß man mit "new RegExp()" sich die RegExp on-the-fly zusammenbasteln kann.

    Also: SELF-Holzauge sei wachsam ... ;-)

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Hallo,

      Ist das trotzdem okay,

      Ja!

      AFAIR sagt SELFHTML z.B. auch nicht, daß man mit "new RegExp()" sich die RegExp on-the-fly zusammenbasteln kann.

      Nun mal langsam mit den jungen Pferden.

      In SELFHTML steht vieles nicht drin, deshalb ist das Fehlende noch längst nicht gleichermaßen empfehlenswert. new RegExp ist ECMAScript-standardisiert, search(String) hingegen ist in keiner Spezifikation auch nur erwähnt (man korrigiere mich).

      Wenn man search() also einen String übergibt, sollte man zur Kenntnis nehmen, dass das weder gültiges ECMAScript, noch gültiges Microsoft JScript, noch gültiges Netscape JavaScript ist. Das heißt, man kann sich auch nicht darauf verlassen, dass irgendein unbekannter JavaScript/ECMAScript-Interpreter den Code korrekt ausführt.

      Bei new RegExp ist die Sachlage völlig anders.

      Mathias

      1. Hi,

        Wenn man search() also einen String übergibt, sollte man zur Kenntnis nehmen, dass das weder gültiges ECMAScript, noch gültiges Microsoft JScript, noch gültiges Netscape JavaScript ist.

        sind Doublequotes keine gültigen Delimiter für Regular Expressions?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,

          sind Doublequotes keine gültigen Delimiter für Regular Expressions?

          »Delimiter« gibts in JavaScript nicht, es gibt nur den RegExp-Literal, der mit / beginnt und mit / endet. "..." ist hingegen ein in jedem Fall ein String-Literal. Wenn man reguläre Ausdrücke in JavaScript als Strings notieren will, lässt man jegliche Delimiter weg und übergibt den String dem RegExp-Konstruktor.

          Mathias

          1. Hi,

            sind Doublequotes keine gültigen Delimiter für Regular Expressions?
            »Delimiter« gibts in JavaScript nicht, es gibt nur den RegExp-Literal, der mit / beginnt und mit / endet. "..." ist hingegen ein in jedem Fall ein String-Literal. Wenn man reguläre Ausdrücke in JavaScript als Strings notieren will, lässt man jegliche Delimiter weg und übergibt den String dem RegExp-Konstruktor.

            ah, okay. Danke für die Erklärung.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
      2. Hi,

        Nun mal langsam mit den jungen Pferden.

        Mir ging es nur darum mitzuteilen, daß SELFHTMLs JS-Teil nicht unbedingt vollständig ist - auch bei diesen, weitläufig verwandten, bereits "älteren" Themen betreffend. =:-)

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      3. gruss molily,

        Nun mal langsam mit den jungen Pferden.

        In SELFHTML steht vieles nicht drin, deshalb ist das Fehlende noch längst
        nicht gleichermaßen empfehlenswert. new RegExp ist ECMAScript-standardisiert,
        search(String) hingegen ist in keiner Spezifikation auch nur erwähnt
        (man korrigiere mich).

        ok - Du hast es so gewollt:

        <blockquote lang="en" cite="[link:http://www.ecma-international.org/publications/standards/Ecma-262.htm]">  
        15\.5.4.12 String.prototype.search (regexp)  
          
                  If regexp is not an object whose [[Class]] property is "RegExp",  
                  it is replaced with the result of the expression new RegExp(regexp).  
        </blockquote>
        

        ----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        dieser fall wird demzufolge mit einem umwandlungsautomatismus abgefangen.

        <blockquote lang="en" cite="[link:http://www.ecma-international.org/publications/standards/Ecma-262.htm]">  
                  Let string denote the result of converting the this value to a string.  
          
                  The value string is searched from its beginning for an occurrence of  
                  the regular expression pattern regexp. The result is a number indicating  
                  the offset within the string where the pattern matched, or –1 if there  
                  was no match.  
          
                  NOTE 1  
                  This method ignores the lastIndex and global properties of regexp. The  
                  lastIndex property of regexp is left unchanged.  
          
                  NOTE 2  
                  The search function is intentionally generic; it does not require that  
                  its this value be a String object. Therefore, it can be transferred to  
                  other kinds of objects for use as a method.  
        </blockquote>
        

        ----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        wobei  NOTE 2 noch viel beeindruckender ist, als "kann"-bestimmung aber offiziell
        und auch offensichtlich noch fuer keinen browser umgesetzt wurde.

        (function () {
          alert("ECMA 262 - 15.5.4.12 - NOTE 2");
          alert(arguments.callee.search);
          alert((new Object()).search);
        })();

        Wenn man search() also einen String übergibt, sollte man zur Kenntnis nehmen,
        dass das weder gültiges ECMAScript, noch gültiges Microsoft JScript, noch
        gültiges Netscape JavaScript ist. Das heißt, man kann sich auch nicht darauf
        verlassen, dass irgendein unbekannter JavaScript/ECMAScript-Interpreter den
        Code korrekt ausführt.

        siehe oben.

        by(t)e by(t)e - peterS. - pseliger@gmx.net

        --
        »Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
        Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
        ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]
        1. Hallo,

          If regexp is not an object whose [[Class]] property is "RegExp",
                    it is replaced with the result of the expression new RegExp(regexp).

          Oh, danke, das habe ich tatsächlich überlesen.

          Mathias

  2. Hallo und Danke für die schnellen Antworten!

    Schönen Tag noch! Daniel