Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    [espressione regolare] separare tre campi

    Ho una stringa del tipo:

    campo1:x y z campo2: a 1 . campo3:

    per separare i tre campi ho usato queste espressione regolare:

    ^\s*campo1:\s*(.*)\s*campo2:\s*(.*)\s*campo3:\s*(. *)\s*$


    Mi pare che funzioni. Però mi piacerebbe che venisse controllata da qualcuno più esperto di me.

    Ciao
    Pietro

  2. #2
    Sarà che non sono più esperto di te ma io non ci vedo alcun difetto; be certo, se il valore di campo1 è campo2 inutile dire che rimani fregato
    Per maggiore sicurezza quindi dovresti fare in modo che ogni valore sia delimitato dalle virgolette "", e poi modifichi la regex di conseguenza.

    Infine la regex che hai scritto tu va bene se sei sicuro che ci siano 3 campi; se vuoi generalizzare puoi fare una cosa del genere:
    Codice PHP:
    var valori stringa.split(/\s*campo[0-9]+\:\s*/);
    valori.shift(); //Elimino il primo elemento che è vuoto 
    O se vuoi mettere anche le virgolette....
    Codice PHP:
    var valori = [];
    stringa.replace(/\s*campo[0-9]+\:\s*"([^"]+)"/g, function(m, o1) {
      valori.push(o1);
    }) 

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti ringrazio della risposta. Ho visto fare cose assolutamente interessanti con le espressioni regolari, ma saperle usare bene è tutta un'altra cosa. Ecco perchè ho chiesto. Ciao
    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ecco il difetto che ho trovato:

    il costrutto (.*) deve essere sostituito da (.*?) per evitare che vengano presi pure eventuali spazi o delimitatori che circondano il campo.

    Pietro

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 © 2024 vBulletin Solutions, Inc. All rights reserved.