我試圖運行一個文本框,將格式mm/dd格式輸入運行正則表達式驗證。我對結構部分有足夠的幫助,例如^\d{2}/\d{2}?
,但有沒有辦法限制最大值和最小值,如^\d{2}(sth that requires this to be between 0 and 12)/\d{2}(sth that requires this to be between 1 and 31)?
。正則表達式限制數字的上限和下限
回答
這不是要用正則表達式來完成!
但是,我做到了,因爲我可以。
這裏是一個解決方案:
/^(?!0?2\/3[01])(?!(?:0?[469]|11)\/31)(?:\d|1[012])\/(?:[1-9]|[12]\d|3[01])$/
你應該NEVER使用正則表達式這個!
據我所知,格式是mm/dd
(月/天)。
天數在1-31之間,月份從0-12(OP的要求)。
這只是評估。
使用負向預覽,我可以確保(可能)有效的日期。
但嚴重:孩子們,不要在家裏試試!
編輯:
如要求通過在讚揚OP,在這裏我將解釋如何工作的:
右一開始我們有^
字符。
這將字符串錨定在開頭,而不是從字符串中間開始匹配。
以(?!)
開頭的所有組都是負向預測。
這是什麼做的是,它會採取偷看提前檢查,如果有什麼在前面不匹配的模式。
使用(?!0?2\/3[01])
將確保2/30
或2/31
不是匹配。
與(?!(?:0?[469]|11)\/31)
類似,其確保使用4/31
,6/31
,9/31
和11/31
。
使用第一個示例((?!0?2\/3[01])
),有0?
。
這意味着最多有一個0
。
仍然在同一個例子中,你會看到3[01]
。
使用[]
可確定一組可匹配的字符,在本例中爲字符0
和1
。
使用第二個示例((?!(?:0?[469]|11)\/31)
),您可以使用組(?:0?[469]|11)
。
像(?:)
這樣的組都是非捕獲組。
這意味着他們會匹配但不會保存比賽。
這對於我們與|
一起使用的決策很有用,它用於匹配之前或之後的模式。
實際上,它的工作原理與or
操作符相似。
到目前爲止,我們只檢查字符串是否不是這些無效日期之一。
現在,我們將使用(?:\d|1[012])\/(?:[1-9]|[12]\d|3[01])$
驗證日期格式。
這些零件可確保格式正確且在限制範圍內。
的(?:\d|1[012])
位匹配任何數目從0
到9
(該\d
,這是相同的[0-9]
)或匹配10
,11
12
或。
類似地,(?:[1-9]|[12]\d|3[01])
匹配從1
到9
;或1
或2
後跟從0
到9
(實質上,10
到29
)的數字;或30
或31
。
要結束,我們有$
字符。
與^
相反,它將錨定到字符串的末尾。
沒有這個,2/29 i like cookies
會匹配。
沒有^
,On 3/20, we will meet here
也將被匹配。
我不是世界上最好的老師,我也不是最擅長解釋的。
如果你練習,你會看到這開始有意義。
任何關於這個問題的問題,我可以自由回答。
對downvoter:我正在修復它!它正在工作! – 2014-12-04 18:38:39
@HakuKalay至少告訴我這是否符合您的需求,請 – 2014-12-04 18:51:33
接受此爲答案。主要是爲了清楚地說明我所要求的是不是要用RegEx來完成。如果我知道我不會花一個半小時尋找可能的答案。謝謝。 – NoSaidTheCompiler 2014-12-04 18:57:13
- 1. 正則表達式,字符數限制
- 2. 正則表達式來限制數字
- 3. ASP.NET正則表達式,限制數字
- 4. 正則表達式字符數限制
- 5. 限制正則表達式字邊界
- 6. 正則表達式來限制字符
- 7. 限制在正則表達式表達
- 8. 正則表達式 - 長度限制和字母數字
- 9. 正則表達式上的keydown僅限制數字
- 10. 限制_末的正則表達式
- 11. 限制複雜的正則表達式
- 12. 對nginx正則表達式的限制?
- 13. 將數字限制在上限/下限?
- 14. 正則表達式限制零
- 15. 正則表達式與限制
- 16. 正則表達式與長度限制
- 17. 限制正則表達式匹配
- 18. Python正則表達式 - 限制結果?
- 19. 正則表達式 - 限制字符串中的字符數量
- 20. 限制數字字符的正則表達式是什麼?
- 21. 用於匹配和限制字符類的正則表達式
- 22. 正則表達式限制數字字符串
- 23. 正則表達式以限制重複的數字
- 24. 正則表達式的字符數限制
- 25. 將字符數限制爲5000的正則表達式
- 26. 正則表達式問題 - 字符限制和空白忽略
- 27. 正則表達式:限制整個匹配和字符類別
- 28. 正則表達式限制特殊字符,只允許DOT和&
- 29. 限制數字在下限和上限/限制之間的最佳方法
- 30. 正則表達式 - 數字,字符和空格僅限
這實際上是試圖在一個方孔中裝上一個圓釘。 – 2014-12-04 18:32:39
正則表達式不能以你想要的方式驗證數字 – Dalorzo 2014-12-04 18:32:57
即使正則表達式是可能的,但它會允許'02/30'或'09/31'等 – anubhava 2014-12-04 18:33:55