2012-01-06 114 views
0

我需要一個正則表達式,可以讓我輸入0-5,000之間的值。我是一個新手,對於正則表達式來說相當新穎。 ^(0?[0-4]?[0-9]?[0-9]?[0-9])$是我迄今爲止,但它只會讓我去到4,999。謝謝Reg Ex數值範圍

+5

您好,歡迎#1。還請提及您正在使用哪種編程語言來處理此正則表達式。 – Animesh 2012-01-06 16:25:40

+1

您使用的語言的一些背景肯定會有所幫助。如果你使用的是正確的語言/平臺,你可以通過使用一個對應於實際數值的控件來解決這個問題,並在控件本身設置最大/最小值,而不是使用正則表達式。 – Zannjaminderson 2012-01-06 16:28:43

回答

5

爲什麼不將這部分字符串解析爲數字並將其與正則表達式之外的5000進行比較?如果你使用這個正則表達式,我打賭誰會讀你的代碼會恨你!

1
println '3,1777' ==~ /[0-4]((\,)\d{1,3})?/ 
println '3,999' ==~ /[0-4]((\,)\d{1,3})?/ 

這就是Groovy。不過,您可以使用支持PCRE的任何語言的正則表達式=)

2

請不要使用正則表達式進行數值範圍驗證。使用正則表達式來確保字符串匹配模式(即僅包含數字),但只需將該字符串轉換爲數字並驗證該數字即可。

正則表達式不是金色的錘子,只有很多釘子纔能有效地使用。

0

^(5000|[1-4][0-9]{3}|[1-9][0-9]{2}|[1-9][0-9]|[0-9])$

2

關注Ilya Kogan的回答。

如果你真的想你可以這樣做:

(5000|[1234]?\d{3})(?!\d)