Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Espressione regolare

  1. #1
    Utente di HTML.it L'avatar di barnico
    Registrato dal
    Oct 2001
    Messaggi
    490

    Espressione regolare

    Salve,
    mi servirebbe una espressione regolare che verifichi delle stringhe abbiano lettere, il carattere / e . e inoltre che ci siano obbligatoriamente 3 numeri non performa vicini all'interno della stringa.
    ho provato così ma niente:
    codice:
    '/^[a-z.//]+[0-9]{3}$/i'

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Forse è meglio che posti degli esempi di stringhe rappresentativi di quelli che la regexp deve riscontrare
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    Utente di HTML.it L'avatar di barnico
    Registrato dal
    Oct 2001
    Messaggi
    490
    ok, stringhe possibili sono:

    prova/prova1/prova-23
    prova.com/1-prova-23
    prova.it/345-prova

  4. #4
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Questo pattern ti verifica la formattazione della stringa

    /^([\w\d]+(\/|\.))+(\w|\d)+(-(\w|\d)+)+$/i

    Questo invece verifica che ci siano essattamente 3 cifre sparse nella stringa

    /^([^\d]*?\d){3}[^\d]*$/

    Non so se è possibile scrivere una regexp che unisca le due cose. Comunque fai qualche prova.

    Valutazione regexp
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  5. #5
    Utente di HTML.it L'avatar di barnico
    Registrato dal
    Oct 2001
    Messaggi
    490
    grazie Grino, faccio subito dei test

  6. #6
    Originariamente inviato da barnico
    ok, stringhe possibili sono:

    prova/prova1/prova-23
    prova.com/1-prova-23
    prova.it/345-prova
    Nessuna di queste stringhe corrisponde ai tuoi requisiti (per via del trattino), puoi spiegare meglio?
    Devono tutte avere lettere, slash, punto e numeri? Cioe' una stringa senza punto deve fallire o basta che ci siano SOLO quei caratteri ma non necessariamente tutti? E il trattino?

  7. #7
    Utente di HTML.it L'avatar di barnico
    Registrato dal
    Oct 2001
    Messaggi
    490
    non per forza devono essere tutti presenti, ma può capitare, il trattino può essere ripetuto più volte come separatore delle parole, infine ci devono essere minimo 3 numeri contigui o sparpagliati

  8. #8
    codice:
    if ( preg_match('#^[-\da-z./]+$#i', $line) AND strlen(preg_replace('#[^\d]#', '', $line)) >= 3 ) {
        echo "$line ok\n";
    }

  9. #9
    Utente di HTML.it L'avatar di barnico
    Registrato dal
    Oct 2001
    Messaggi
    490
    yes ok

  10. #10
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Già, ma nel pattern che ti è stato proposto il trattino, il punto e lo slash possono trovarsi anche all'inizio della frase come alla fine e non solo come separatori di parole.

    ovvero vengono riscontrate frasi del tipo

    -//.-.testo454/.

    Invece con un pattern

    /^([\w\d]+[\/\.-]?)+[\w\d]+$/i

    hai che la stringa inizi con una sequenza di numeri e lettere eventualmente intervallate da slash, punto o trattino e venga conclusa con una sequenza di numeri e lettere. Se poi serve che inizi con una lettera e mai con un numero allora occorre modificarla ancora.
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

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.