Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: espresioni regolari

  1. #1

    espresioni regolari

    salve a tutti
    devo fare un controllo su una stringa la quale deve contenere solo : da 0 a 9 (tutti i numeri) ,
    + , - , *, /, e solo le lettere C, G, L .
    ho fatto cosi :

    if (ereg("[0-9()*/+-CGL]",$stringa)==false) { echo "stringa non corretta" ;}

    pero' lascia passare anche altre lettere ..
    c'è un sistema per fare in modo che se la stringa contenga altre cose vada in errore ??

    grazie
    si! si! mi sembra che sto programmando !

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    prova così

    codice:
    echo preg_match("#^[0-9cgl\/\+\-\*]+$#i",$stringa) ? 'valido' : 'non valido';

  3. #3
    i valori di C G L mi servono maiuscoli con quel sistema il valore è indifferente

    i valori della stringa da controllare sono gia maiuscoli ....
    si! si! mi sembra che sto programmando !

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da fontanari rober
    i valori di C G L mi servono maiuscoli con quel sistema il valore è indifferente

    i valori della stringa da controllare sono gia maiuscoli ....
    Ah,pensavo che per le lettere volessi un confronto case insensitive.

    codice:
    echo preg_match("#^[0-9CGL\/\+\-\*]+$#",$stringa) ? 'valido' : 'non valido';

  5. #5
    Non va
    mi da sempre false !

    si! si! mi sembra che sto programmando !

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da fontanari rober
    Non va
    mi da sempre false !

    posta un esempio di stringa da verificare.

  7. #7
    Originariamente inviato da nicola75ss
    Ah,pensavo che per le lettere volessi un confronto case insensitive.

    codice:
    echo preg_match("#^[0-9CGL\/\+\-\*]+$#",$stringa) ? 'valido' : 'non valido';

    non serve fare l'escape di quei caratteri all'interno di una classe di equivalenza ... è poi buona regola usare gli apici singoli nelle regexp per non dover fare l'escape dei char speciali per PHP

    codice:
      '#[0-9CGL/+*-]+$#'
    se anche la stringa vuota è ammessa allora usa * al posto del + dopo la ]
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da drAlberT
    non serve fare l'escape di quei caratteri all'interno di una classe di equivalenza ... è poi buona regola usare gli apici singoli nelle regexp per non dover fare l'escape dei char speciali per PHP

    codice:
      '#[0-9CGL/+*-]+$#'
    se anche la stringa vuota è ammessa allora usa * al posto del + dopo la ]
    Grazie per la precisazione.
    Non sono molto pratico di espressioni regolari. Però a parte la tua giusta precisazione non capisco perchè a lui dia sempre false.

  9. #9
    Originariamente inviato da nicola75ss
    Grazie per la precisazione.
    Non sono molto pratico di espressioni regolari. Però a parte la tua giusta precisazione non capisco perchè a lui dia sempre false.
    credo sbagli lui qualcosa :-)

    Codice PHP:
    <?php
    $stringa 
    'C+-089075634';
    echo 
    preg_match("#^[0-9CGL\/\+\-\*]+$#",$stringa) ? 'valido' 'non valido';
    >> valido
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

  10. #10
    l'esempio è un espresione matematica qualsiasi :
    ((34+10-8)*L/10)*C
    dove succesivamente devo sostituire le lettere con valori .....

    con l'uso di = '#[0-9CGL/+*-]+$#' sempre true

    con l'uso di = '#^[0-9CGL/+*-]+$#' sempre false

    con L'uso di = "#^[0-9CGL\/\+\-\*]+$#" sempre false
    si! si! mi sembra che sto programmando !

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.