2013-07-19 15 views
5

ho bisogno di una .Net (C#) Regex per abbinare una virgola elenco di numeri che non corrispondono se c'è una virgola come ultimo carattereRegex per abbinare elenco separato da virgole senza virgola alla fine

123,123,123,123 true - correct match 
123,123,123,123, false - comma on end 
123,123,123,,123 false - double comma 
,123,123,123,123 false - comma at start 
"" false - empty string 

123 true - single value 
separato

ho trovato questo Regex, ma le partite quando c'è una virgola alla fine ^([0-9]+,?)+$

Quale potrebbe essere un modello Regex che si adatterebbe questo schema?

EDIT: Aggiunto 1 esempio per chiarezza la risposta corretta lavora per 123

risposta

12

Provare a utilizzare questo schema:

^([0-9]+,)*[0-9]+$ 

È possibile testarlo here.

3

Prova questo:

//This regex was provided before the question was edited to say that 
//a single number is valid. 
^((\d+\s*,\s*)+(\s*)(\d+))$ 

//In case a single number is valid 
^(\d+)(\s*)(,\s*\d+)*$ 

Ecco i risultati dei test

123,123,123,123 match 
123,123,123,123, no match 
123,123,123,,123 no match 
,123,123,123,123 no match 
""     no match (empty string) 
123    no match for the first regex, match for the second one 

Vedi Regex doesn't give me expected result

Edit: Modificata la regex per includere l'ultimo caso di un numero unico, senza alcuna virgola.

+0

lavoro nel mio caso .... grazie per la soluzione giusta :) –

1

prova questo

Nessun virgole postfix/prefisso: [0-9]+(,[0-9]+)*

Nessun prefisso (suffisso opzionale): [0-9]+(,[0-9]+)*,?

No suffisso (prefisso opzionale): ,?[0-9]+(,[0-9])*

suffisso opzionale e il prefisso : ,?[0-9]+(,[0-9]+)*,?

Problemi correlati