2013-07-19 10 views
5

muszę .NET (C#) Regex dopasować przecinek listę numerów, które nie będą się zgadzać, czy jest przecinek jako ostatniego znakuRegex dopasować rozdzielona przecinkami lista bez przecinka na końcu

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 
rozdzielone

Znalazłem ten Regex, ale pasuje, gdy na końcu jest przecinek ^([0-9]+,?)+$

Jaki byłby wzór Regex, który pasowałby do tego wzoru?

EDIT: Dodano 1 przykład dla jasności poprawna odpowiedź pracuje 123

Odpowiedz

12

Spróbuj użyć tego wzoru:

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

Można go here przetestować.

3

Spróbuj tego:

//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+)*$ 

Oto wyniki testu

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 

Zobacz Regex doesn't give me expected result

Edycja: Modified regex obejmować ostatni przypadek pojedynczego numer bez przecinka.

+0

praca w moim przypadku .... dziękuję za właściwe rozwiązanie :) –

1

skorzystaj z tego

Brak przecinków postfix/prefix: [0-9]+(,[0-9]+)*

bez prefiksu (opcjonalnie postfix): [0-9]+(,[0-9]+)*,?

No postfix (opcjonalnie numer kierunkowy): ,?[0-9]+(,[0-9])*

Opcjonalny Postfix oraz prefiks : ,?[0-9]+(,[0-9]+)*,?

Powiązane problemy