我怎樣才能改變這個正則表達式的 /^[1-9][0-9]{0,3}$|^[1-9][0-9]{0,3}[\.][0-9]$/
地看到,它接受「0.1」和「0.2」等價值觀,但它不應該接受「0.0」正則表達式匹配這個設定值
0
A
回答
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);
};
當然,它不使用任何正則表達式(這是你問的什麼),但沒有很好的理由使用它們來解決這個問題(主要是因爲它是更容易解決使用上面的方法)
相關問題
- 1. 匹配這個正則表達式:qr /(?!)/;
- 2. 匹配正則表達式設置
- 3. 正則表達式匹配
- 4. 正則表達式匹配
- 5. 正則表達式匹配%
- 6. 正則表達式匹配
- 7. 正則表達式匹配
- 8. 正則表達式 - 匹配
- 9. 正則表達式匹配
- 10. 匹配正則表達式
- 11. 正則表達式 - 匹配
- 12. 正則表達式匹配
- 13. 正則表達式匹配
- 14. 正則表達式匹配
- 15. 正則表達式匹配
- 16. 匹配正則表達式{
- 17. 正則表達式匹配
- 18. 正則表達式匹配「|」
- 19. 正則表達式匹配
- 20. 正則表達式匹配
- 21. 正則表達式匹配
- 22. 正則表達式:匹配
- 23. 正則表達式匹配@「*」
- 24. 匹配正則表達式
- 25. 正則表達式:匹配
- 26. 匹配正則表達式
- 27. 正則表達式匹配
- 28. 正則表達式匹配
- 29. 正則表達式匹配
- 30. 正則表達式匹配
你想驗證一個十進制值來查看它是不是0.0? – BoltClock 2010-12-06 21:18:13
準確或不應該接受什麼值? – 2010-12-06 21:19:00
@Bolt:Iam希望接受這個值0.1,0.2等等,0.0對於我能夠驗證的字段無效 – Someone 2010-12-06 21:20:19