Andi: Regex macht zuviel

Hallo,

ich weiß das Regexe hungrig sind da gibt es aber den ungreedy Tag U

aber er macht mir doch noch weiter.

Hier die Regex (Um Urls ein bischen zu checken):

=^(ftp|http|https){1,1}://[a-zA-Z0-9]*.[a-zA-Z]{2,3}=U

Grüße und Danke
Andi

  1. Hallo,

    ich weiß das Regexe hungrig sind da gibt es aber den ungreedy Tag U

    aber er macht mir doch noch weiter.

    Hier die Regex (Um Urls ein bischen zu checken):

    =^(ftp|http|https){1,1}://[a-zA-Z0-9]*.[a-zA-Z]{2,3}=U

    Grüße und Danke
    Andi

    Und was ist jetzt Deine Frage?
    Dein Ausdruck ist aber nicht ganz so brauchbar, nimm mal sowas:
    ^(ftp|http|https)://[a-zA-Z0-9.]*.[a-zA-Z]{2,}$
    Ist allerdings nur mal eben getippt und ungetestet, sollte aber die meisten URLs erschlagen. Erweitern kann man das noch auf Verzeichnisse, Dateien, Bindestrich etc.

    1. Hi,

      meine Frage ist wie kann ich machen, dass die Regex beim ersten Macth aufhört:

      www.foo.bar -> match
      www.foo.barwww.foo.bar -> kein match

      Grüße
      Andi

      1. Hallo,

        das wäre zu aufwendig alles zu checken dann öffne ich sie lieber mit fopen.

        Grüße
        Andi

      2. hi,

        meine Frage ist wie kann ich machen, dass die Regex beim ersten Macth aufhört:

        www.foo.bar -> match
        www.foo.barwww.foo.bar -> kein match

        wieso, du willst doch laut eigener aussage URLs checken.

        und unter der annahme, dass www.foo.bar ein gültiger hostname sei, .bar also eine gültige TLD - wieso sollte da www.foo.barwww.foo.bar kein gültiger hostname sein ...?

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      3. Hi,

        meine Frage ist wie kann ich machen, dass die Regex beim ersten Macth aufhört:

        www.foo.bar -> match
        www.foo.barwww.foo.bar -> kein match

        Grüße
        Andi

        Wenn's nur das ist: Genau das kannst Du mit meinem Ausdruck machen. Du müßtest nur noch die Bindestriche einbauen.