Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [Java] Controllo testo Regex

    Salve a Tutti.... sto scrivendo il codice per il controllo del testo inserito in alcuni JTextField,
    di seguito posto il Pattern.compile....
    codice:
    Pattern patNomi = Pattern.compile("[^\\|/*<>=,#@;:\\-+!\"()%^°\\s]+");
    Pattern patGenerico = Pattern.compile("[^\\|/*<>=#@;:\\-+!\"%^]+");
    Pattern patData = Pattern.compile("[0-3][0-9]?/[0-1][0-2]?/[0-9][0-9][0-9][0-9]"); 
    Pattern patFiscale = Pattern.compile("[A-Z]{6}[0-9]{2}[A-Z]{1}[0-9]{2}[A-Z]{1}[0-9]{3}[A-Z]{1}");
    Ma non riesco a comporre il Pattern in modo che fosse accettato anche il campo "vuoto",
    cioè con nessun inserimento e, nel contempo, che non venisse accettato l'inserimento del
    solo "spazio" come unico inserimento, cioè per sempio se viene digitato solo lo spazio " "
    non dovrebbe essere accettato, mentre il nome "De Rossi", cioè con lo spazio tra le parole si!!

    Grazie per l'attenzione.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Il "+" significa "almeno un'occorrenza", mentre l'asterisco significa "zero o più occorrenze".
    La RegEx che hai scritto per il nome (patNomi) pretende che vi sia almeno un carattere che non sia fra quelli elencati... ma almeno un carattere ( + ).

    Io proverei con questa:

    codice:
    Pattern patNomi = Pattern.compile("\\w*|(\\w+ \\w+)*");
    Una RegEx composta da due sotto-espressioni in alternativa tra di loro
    codice:
    \w*
    qualunque carattere non whitespace zero o più volte (qui accetto anche la stringa vuota)

    oppure

    codice:
    (\w+ \w+)*
    almeno un carattere non whitespace seguito dallo spazio, seguito a sua volta da almeno un carattere non whitespace. L'intera sequenza può essere ripetuta più volte (così riesco ad intercettare anche i cognomi doppi: De Rossi Daniele).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Grazie, proverò i tuoi suggerimenti.

    Io proprio non le capisco queste espressioni

  4. #4
    Ciao LeleFT, sono di nuovo qui a combattere con il Pattern.compile....

    Ho un campo dove inserire solo numeri,
    ho provato questo pattern

    Pattern patSuperficie = Pattern.compile("[^a-zA-Z]+"); // pattern di default SUPERFICIE

    va bene se inserisco le lettere, ma se inserisco un asterisco, un trattino,
    il carattere mi viene ugualmente accettato!!
    Come posso migliorare il pattern in modo che mi accetti solo numeri!?

    Grazie.

  5. #5
    Credo di aver subito risolto.... dimmi se è giusto.....

    Pattern patSuperficie = Pattern.compile("([0-9]+)"); // pattern di default SUPERFICIE

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Originariamente inviato da Wolvy23
    Credo di aver subito risolto.... dimmi se è giusto.....

    Pattern patSuperficie = Pattern.compile("([0-9]+)"); // pattern di default SUPERFICIE
    Sì. Oppure c'è la scorciatoia:

    codice:
    Pattern patSuperficie = Pattern.compile("\\d+");
    \d indica una qualunque cifra

    Credo che ti possa tornare utile questo link della documentazione ufficiale: http://docs.oracle.com/javase/6/docs...ttern.html#sum


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Ok, grazie dell'aiuto, gentilissimo.

  8. #8
    Ritorno su questa discussione perché non riesco a realizzare un Pattern
    che mi controlli questo tipo di inserimenti consentiti:

    233 (o solo un numero di 1 o più cifre)
    12/45/123 (o più numeri separati dal solo "/")

    Ho provato con questo pattern:
    Pattern.compile("[\\d+\\/\\d+]");
    ...ma non funziona!!

    Inoltre dovrei crearne uno simile che funzioni così:

    44 (o solo un numero di 1 o più cifre)
    23-25-78/89-96 (o più numeri separati da "-" e "/")

    .... grazie per l'attenzione!
    Buona domenica.

  9. #9
    Qualcuno può darmi un aiuto!?
    Proprio non ci riesco, sto cerando di usare
    anche Expresso per generare il pattern giusto
    ma non ci riesco

  10. #10
    Forse ho risolto....

    ([0-9]+/*)+

    ([0-9]+/*-*)+

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.