2014-09-23 61 views
0

我有一個輸入,需要最小數值爲125.我是新來的正則表達式,並使用基金會的守護進行驗證,據我所知,沒有具體的混合/最大支持。我希望有一個正則表達式來設置模式屬性。任何解決方案謝謝!正則表達式的最小數值爲125?

+0

你嘗試過什麼嗎? http://www.regular-expressions.info/numericranges.html – Bergi 2014-09-23 17:55:45

+0

AFAIK正則表達式不能這樣做。您可能可以使它適用於0到999之間的數字,但不適用於任意數量的數字。無論哪種方式,轉換爲int並檢查值可能更簡單。 – 2014-09-23 17:56:35

+6

你爲什麼要使用正則表達式? – 2014-09-23 17:57:02

回答

7

任何正則表達式來全面驗證一個數字的價值將是強有力的。我建議只解析數字到int然後檢查它。

在Javascript中:

if (parseInt(numberString) >= 125) 
{ 
    // number is at least 125. 
} 
+1

是的,我覺得正則表達式會讓事情在這個時候過於複雜化。我會使用jQuery基本上做你以上做的。 – Evan 2014-09-23 20:37:18

+0

@Evan我編輯了我的答案以使用Javascript。 – 2014-09-23 21:11:37

0

如果通過正則表達式來做到這一點,你可以試試這個表達式:

([1-9][2-9][5-9])|([2-9][0-9][0-9])|([1-9]\d{3}\d*) 

我已經在JavaScript測試,它是在那裏工作的罰款:

var pattern = /([1-9][2-9][5-9])|([2-9][0-9][0-9])|([1-9]\d{3}\d*)/; 
console.log(pattern.test('120')); //false 
console.log(pattern.test('125')); // true 
console.log(pattern.test('200')); // true 
console.log(pattern.test('10000')); // true 
console.log(pattern.test('99999')); // true 
+1

我覺得它有點棘手。你必須匹配310或其他東西。 – sln 2014-09-23 18:15:51

+1

數字200怎麼樣?這也不包括前導零。 – 2014-09-23 18:18:47

+0

對,我同意我的答案中有很多缺失。讓我在這裏加上缺少的邏輯。 – 2014-09-23 19:00:33

2

可能只需要覆蓋3位或更大的數字。

# ^[0-9]*(?:12[5-9]|1[3-9][0-9]|[2-9][0-9]{2}|[1-9][0-9]{3,})$ 

^  
[0-9]* 
(?: 
     12 [5-9] 
    | 
     1 [3-9] [0-9] 
    | 
     [2-9] [0-9]{2} 
    | 
     [1-9] [0-9]{3,} 
) 
$ 
0

按您要添加125爲最小值的問題,那麼你可以處理它像

/([1-9][0-9]{3,}|12[5-9]|1[3-9][0-9]|[2-9][0-9][0-9])/ 

查找測試用例加入到這一鏈接如下:

https://regex101.com/r/h6bScL/1