2010-12-06 38 views
0

我怎樣才能改變這個正則表達式的 /^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$/ 地看到,它接受「0.1」和「0.2」等價值觀,但它不應該接受「0.0」正則表達式匹配這個設定值

+0

你想驗證一個十進制值來查看它是不是0.0? – BoltClock 2010-12-06 21:18:13

+1

準確或不應該接受什麼值? – 2010-12-06 21:19:00

+0

@Bolt:Iam希望接受這個值0.1,0.2等等,0.0對於我能夠驗證的字段無效 – Someone 2010-12-06 21:20:19

回答

1

正則表達式涵蓋現有的情況,還允許小數點0.1 <= n <= 0.9

/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}\.[0-9]$|^0\.[1-9]$/ 

或更好,從Dreynold的解決方案:

/^[1-9][0-9]{0,3}(\.[0-9])?$|^0\.[1-9]$/ 

老答案,僅供參考,要求由OP更新:

如果你只想要一個小數位,與現有的允許值:

/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$|^0\.[1-9]$/ 

如果僅小數則:

/^0\.[1-9]$/ 

如果多個小數則:

/^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$|^0\.[1-9][0-9]*$/ 

/^0\.[1-9][0-9]*$/ 
2

一至四個數字,有或沒有1位小數精度:

/^[1-9][0-9]{0,3}(\.[0-9])?$/ 

0.1通過0.9,步長0.1:

/^0\.[1-9]$/ 


/^[1-9][0-9]{0,3}(\.[0-9])?$|^0\.[1-9]$/ 
2

這確實聽起來並不像一個正則表達式的問題:你會關閉更好(從維護性和可讀性的角度來看)治療你的號碼數字和做簡單的範圍檢查:

var isValid = function (x) { 
    // Make sure we're dealing with a number 
    x = parseFloat(x); 
    // If x is greater than zero but less than 0.9 
    // this expression evaluates to true so the 
    // function returns true, otherwise it evaluates 
    // to false so the function returns false. 
    return (x > 0 && x <= 0.9); 
}; 

當然,它不使用任何正則表達式(這是你問的什麼),但沒有很好的理由使用它們來解決這個問題(主要是因爲它是更容易解決使用上面的方法)