2009-10-26 14 views
5

Szukam wyrażenia regularnego, które akceptuje tylko wartości liczbowe i bez spacji. obecnie używam:.NET Regex, tylko numeryczne, bez spacji

^(0|[1-9][0-9]*)$ 

które działa prawidłowo, ale przyjmuje wartości, które składają się wyłącznie z przestrzeni. Co jest z tym nie tak?

+0

Does \ d + pracę? Powinien pasować do sekwencji jednej lub więcej cyfr. – hashable

Odpowiedz

14

Powód, dla którego * zaakceptuje 0 lub więcej. Czysto pusty ciąg ma 0 cyfr, a więc spełnia wymagania. Potrzebujesz 1 lub więcej, więc zamiast tego użyj +.

^(0|[1-9][0-9]+)$ 

EDIT

Oto Andrews bardziej wytrzymałe i prostsze rozwiązanie.

^\d+$ 
+2

+1 Za szybko! :) –

+0

Pozdrawiam za szybką odpowiedź, jednak nadal będzie przekazywał ciąg, który ma tylko spacje :( –

+1

Twoje sugerowane wyrażenie '^ (0 | 0-9] [0-9] +) $' nie obsługuje numerów większych niż zero i mniej niż 10. –

0

ten regex działa perfecttly

^\d*[0-9](|.\d*[0-9])?$ 
+1

Czy cyfry dziesiętne nie są "tylko numeryczne, bez spacji"? to jest niesprawiedliwe, jeśli pytający żąda tylko liczb całkowitych, bez spacji, tytuł pytania powinien to odzwierciedlać iw tej chwili jestem skłonny do odrzucenia pytania w wyniku. – mrmillsy

Powiązane problemy