Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Validare un url

  1. #1

    Validare un url

    Non capisco per quale strano motivo l'espressione regolare qui sotto funziona benissimo in uno script php, ma con javascript dice sempre che l'url non è corretto.
    Qualcuno mi può aiutare?

    codice:
    <HTML>
    <HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function Validate(form) {
        var v = new RegExp();
        v.compile("/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}'.'((:[0-9]{1,5})?\/.*)?$/i");
        if (!v.test(form["URL"].value)) {
            alert("You must supply a valid URL.");
            return false;
        }
    }
    //-->
    </SCRIPT>
    </HEAD>
    <BODY>
    <FORM NAME="MyForm" ACTION="MyFile.php" METHOD="POST" onSubmit="return Validate(this);">
    <INPUT TYPE="TEXT" NAME="URL" VALUE="http://">
    <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="SUBMIT">
    </FORM>
    </BODY>
    </HTML>

  2. #2
    up

  3. #3
    Ho trovato questa che fa il suo dovere:
    codice:
    function Validate(form) {
        var v = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
        if (!v.test(form.URL.value)) {
            alert("You must supply a valid URL.");
            return false;
        }
    }
    Modifica al post:
    Correggendo la tua regexp (c'era un '.' di troppo) essa funziona
    Comunque, stai attento a 'prendere' il value di un campo della form:
    si scrive form.nomecampo.value e non form["nomecampo"].value come hai scritto tu!

    Codice corretto con la tua regexp:
    codice:
    function Validate(form) {
        var v = /^(http|https):\/\/[a-z0-9]+([\-|\.]{1}[a-z0-9]+)*\.[a-z]{2,5}((:[0-9]{1,5})?\/.*)?$/
        if (!v.test(form.URL.value)) {
            alert("You must supply a valid URL.");
            return false;
        }
    }

    Ri-modifica al post:
    Ti consiglio, in ogni caso, di utilizzare la prima versione della regexp, che valida qualsiasi url, compresi quelli che hanno anche user e password e quelli che hanno l'host composto da una sola parola.
    Infatti, con la tua regexp, sia pure corretta, non viene validato ad esempio http://localhost/ che &egrave; un url validissimo!

    Spero di aver finito con le modifiche alla risposta ...

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  4. #4
    si scrive form.nomecampo.value e non form["nomecampo"].value come hai scritto tu!
    E' la stessa cosa.
    https://developer.mozilla.org/en/Cor...and_Properties


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Originariamente inviato da whisher
    E' la stessa cosa.
    https://developer.mozilla.org/en/Cor...and_Properties
    Ok, whisher, 1-0 per te e palla al centro!
    Che pistola, che sono!



    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  6. #6
    Grazie per l'aiuto!
    Alla fine ho usato la prima versione della regexp. Non avevo notato che la mia non validava url corretti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.