Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347

    [java] espressioni regolari

    Buongiorno a tutti,
    avrei la necessità di scrivere un'espressione regolare da passare ad un document di una TextField che mi prenda solo alfanumerici ed in più i caratteri .-_
    questa è la mia espressione:
    [A-Za-z0-9_.-]
    ma non mi funzione o meglio mi fa inserire gli alfanumerici e solo _
    Dove sbaglio?
    thanx
    nh

  2. #2
    Non hai fatto l'escape dei caratteri. Il punto indica un qualsiasi carattere ad esempio. Inoltre non indichi il numero di occorrenze del carattere.

    codice:
    package desktop;
    
    import java.util.regex.*;
    
    public class Main
    {
        public static void main(String[] args)
        {
            //Pattern p = Pattern.compile("[A-Za-z0-9_\\.-]+");
            Pattern p = Pattern.compile("[\\w\\.-]+");
            String s = "AaadfASDD_098s__.tiscali-it----";
            Matcher m = p.matcher(s);
            
            System.out.println(m.matches());
    
        }
    }
    Puoi semplificare tutto utilizzando \w che indica [a-zA-Z_0-9]

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] espressioni regolari

    Originariamente inviato da newhook
    avrei la necessità di scrivere un'espressione regolare da passare ad un document di una TextField che mi prenda solo alfanumerici ed in più i caratteri .-_
    questa è la mia espressione:
    [A-Za-z0-9_.-]
    ma non mi funzione o meglio mi fa inserire gli alfanumerici e solo _
    Dove sbaglio?
    Stai parlando di "filtro" a che livello? Hai esteso PlainDocument e fatto l'override di insertString() per "filtrare" solo certi caratteri?
    Allora dovresti fare "passare" al super.insertString(...) solo i caratteri che vuoi accettare e gli altri dovresti eliminarli.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    estendo PlainDocument e sto in override di insertString, ho inserito l'espressione [\\w\\.-]+ ma non mi fa inserire il . e -(sempre e solo _).

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    no, funziona...scusate..

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    codice:
    class MyPlainDocument extends PlainDocument {
        // NON elimina questi caratteri! (elimina tutti gli altri)
        private static Pattern pattern = Pattern.compile("[^A-Za-z0-9_.-]");
    
        public void insertString(int offs, String str, AttributeSet attr) throws BadLocationException {
            if (str == null)
                return;
    
            String filteredStr = pattern.matcher(str).replaceAll("");
    
            super.insertString(offs, filteredStr, attr);
        }
    }
    Come si può vedere è molto semplice e pulito. Da notare il [^.... che "nega" la classe di caratteri.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    si, ok, è chiaro
    thanx

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.