[REGEX] PHP > Javascript

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Xirt
  • Registratie: December 2003
  • Laatst online: 21-09 09:14
In php gebruik ik de volgende regex om te controleren of $str een link is naar een andere website:

preg_match("/^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$/", $str)

Ik krijg het nu alleen niet voor mekaar om dit monstertje om te zetten in een regex voor Javascript. Enig idee wat er gewijzigd moet worden? Ik krijg steeds een 'illegal character' error bij \-\. Slashes weghalen leek niet te helpen (verplaatsing van de illegal character).

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:02

crisp

Devver

Pixelated

In PHP geeft deze ook een error ;) (je escaped de forward slashes niet)

In JS werkt dit prima:
JavaScript:
1
2
3
4
var str = 'http://tweakers.net';

if (/^http:\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,3}(\/\S*)?$/.test(str))
    alert('matched!');

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

kleine opmerking: .info = 4 chars, .museum nog meer enz

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:02

crisp

Devver

Pixelated

era.zer schreef op vrijdag 14 maart 2008 @ 09:05:
kleine opmerking: .info = 4 chars, .museum nog meer enz
true, en een IP-adres is eigenlijk ook geldig...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Xirt
  • Registratie: December 2003
  • Laatst online: 21-09 09:14
Hebben jullie inderdaad gelijk in. Misschien is een regex wel niet de beste methode (of het wordt een regex van 4 pagina's?), maar moet ik gewoon kijken of het webadres bestaat?

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Op zich lijkt me een regexp een stuk beter dan het proberen op te vragen van de URL. Ik zou enkel simpelweg matchen vanaf 'http://' tot de eerste whitespace, waarschijnlijk is het toch niet zo belangrijk dat de URL echt valide is. Het hangt een beetje van je doel af.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Xirt
  • Registratie: December 2003
  • Laatst online: 21-09 09:14
Ik heb eigenlijk twee doelen. Allereerst de validatie van geldige URLs en ten tweede de validatie van geldige URLS naar een afbeeldingen van bekende bestandsformaten (einde .jpg / .gif / .png). Ook dit is natuurlijk niet helemaal zuiver aangezien een bestand met de extensie ".jpg" niet perse een afbeelding hoeft te bevatten. Zou ik in beide gevallen dan het beste alleen kunnen checken op http://[IETS].[IETS] en shttp://[IETS].[IETS] waarbij [IETS] uit alle standaardkaraters bestaat (nummeriek + alfabet)?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:02

crisp

Devver

Pixelated

ik kwam laatst op dit uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# http://www.ietf.org/rfc/rfc2396.txt
$url_regexp = '/^
        # simple scheme
        (
            [a-z]+
        ):\/\/

        # userinfo
        (
            (([\w.,!~*\'():;&$=+-]|%[0-9a-f])+)@
        )?

        # hostpart
        (
            (
                [a-z0-9]([a-z0-9-]*[a-z0-9])?
                (\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*
                (\.[a-z]([a-z0-9-]*[a-z0-9])?)
            )
            (:([0-9]+))?
        )

        # path
        (
            (\/([\w.,!~*\'():@&$=;+-]|%[0-9a-f])*)*
        )

        # query
        (
            \?([\w.,!~*\'();\/?:@&=$+-]|%[0-9a-f]{2})*
        )?

        # fragment
        (
            \#([\w.,!~*\'();\/?:@&=$+-]|%[0-9a-f]{2})*
        )?
    $/ix';

;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

crisp schreef op vrijdag 14 maart 2008 @ 15:00:
ik kwam laatst op dit uit:
<MONSTER REGEXP>

;)
Nice..... _/-\o_

Alleen jammer van die ene kleine bug.... :P Of is dat een feature? Voor de toekomste domein extensies?

http://tweakers.net2 is namelijk geldig volgens deze regexp
ook
http://tweakers.net/?array[]=fsdfsdf is niet geldig

In jouw regexp moeten altijd twee hex getallen achter een % staan, maar dat klopt toch niet?
http://tweakers.net/?zoek=%

[ Voor 100% gewijzigd door LuCarD op 14-03-2008 15:22 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:02

crisp

Devver

Pixelated

LuCarD schreef op vrijdag 14 maart 2008 @ 15:12:
[...]


Nice..... _/-\o_

Alleen jammer van die ene kleine bug.... :P Of is dat een feature? Voor de toekomste domein extensies?

http://tweakers.net2 is namelijk geldig volgens deze regexp
Da's geen bug, het is puur een syntax-check. Als je de domein extensie wil checken dan heb je een lijst nodig van alle geldige extensies (en die zal je dan ook bij moeten houden) en kan je daar de betreffende submatch mee vergelijken...
Hetzelfde geldt voor scheme overigens...
ook
http://tweakers.net/?array[]=fsdfsdf is niet geldig

In jouw regexp moeten altijd twee hex getallen achter een % staan, maar dat klopt toch niet?
http://tweakers.net/?zoek=%
Dat zijn beide syntactisch ongeldige URL's. Blokhaken en een letterlijk procent-teken dien je te urlencoden. De link naar de RFC staat boven de code dus je kan dat zelf verifieren ;)

Intentionally left blank

Pagina: 1