Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    espressione regolare che controlla vcalori numerici positivi e negativi

    ciao a tutti ho questa espressione regolare che non funziona correttamente ...

    io ho un valore che può essere positivo o negativo.

    dovrei creare un'espressione regolare che mi verifiche che sianno tutti numeri e che all'inizio può esserci un -
    ma scritta cosi non funziona!
    Codice PHP:
    function numeri($var){
        if (isset(
    $var)){
            
    $result ereg("((^(\-)[0-9]{1,6})+([\.\,])+([0-9]{2}))+$" $var);//dove ci sono i caratteri speciali ho inserito il \ backslash, ma non si vede 
            
    if ($result){
                return 
    true;
            }else{
                return 
    false;
            }
        }

    Qualcuno sà come posso fare a risolvere il problema?

  2. #2
    Utente di HTML.it L'avatar di span
    Registrato dal
    Jan 2004
    Messaggi
    1,644
    forse così fa al caso tuo:

    Codice PHP:
    function isNumeric($var) {
        return isset(
    $var)? preg_match("#^-?[0-9]+[.,]?[0-9]*$#"$var): false;

    Considera che in php c'è la funzione is_numeric, che forse potrebbe andarti bene comunque.

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    la testo subito , ma i 2 # a cosa servvono ?

    il numero è un importo quindi ci sarà anche un . o una , ma la cifra può essere anche negativa...
    cmq ho provato ma non va...

  4. #4
    Utente di HTML.it L'avatar di span
    Registrato dal
    Jan 2004
    Messaggi
    1,644
    mi puoi dare un numero di esempio che non vada?
    i due # sono i delimitatori dell'espressione che con questo tipo di funzioni per le espressioni regolari sono obligatori

  5. #5
    in questo modo 2 o più numeri dopo la virgola,vedi se così va:
    Codice PHP:
    $result =  preg_match("#^-?[0-9]{1,6}[.,]?[0-9]{2,}$#",$var); 

  6. #6
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    Originariamente inviato da span
    mi puoi dare un numero di esempio che non vada?
    i due # sono i delimitatori dell'espressione che con questo tipo di funzioni per le espressioni regolari sono obligatori
    certo ...
    -1541,45
    1548,21
    -14,22
    15897,36
    in breve il campo è un decimal 8,2

    i due # sono i delimitatori dell'espressione che con questo tipo di funzioni per le espressioni regolari sono obligatori
    non sapevo, grazie dell'info... io no sempre fatto così sia come delimitatori sia per le espressioni
    esempio per un controllo su date
    Codice PHP:
    $datecontrol ereg("(^([0-9]{4}\-)+([0-9]{2}\-)+([0-9]{2}))+$" $data); 
    $result = preg_match("#^-?[0-9]{1,6}[.,]?[0-9]{2,}$#",$var);
    anche così nulla


    potrebbe essere di aiuto il fatto che qui ho php 4.0.1

    grazie delle risposte e degli aiuti!

  7. #7
    Utente di HTML.it L'avatar di span
    Registrato dal
    Jan 2004
    Messaggi
    1,644
    ciao tapu, io ho provato con PHP 5.2 questo codice:


    Codice PHP:
    function isNumeric($var) {
        return isset(
    $var)? (bool) preg_match("#^-?[0-9]+[.,]?[0-9]*$#"$var): false;
    }

    var_dump(isNumeric('-1541,45'));
    var_dump(isNumeric('1548,21'));
    var_dump(isNumeric('-14,22'));
    var_dump(isNumeric('15897,36')); 
    ed ottengo:

    bool(true)
    bool(true)
    bool(true)
    bool(true)

    Che è il risultato atteso. Nel tuo ambiente non è così? :master:

  8. #8
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    #^-?[0-9]+[\.\,]?[0-9]+$#
    cosi funziona, am ho dovuto mettere + al posto di $ e gli \ per i caratteri

    grazie mille

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.