任何人都可以想出一個更好的方式來寫這個嗎?它有效,但有點難看。一個數字內的正則表達式模式
輸入的數據是這樣的:125100001個
前兩個數字是年份,接下來的兩個是週數,以及最後5串行。我想驗證一個angular input[number] pattern選項的週數不超過52。基本上只是所以在這裏充分利用$誤差場:)
是:
^\d\d(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-2]){1}\d{5}$
任何人都可以想出一個更好的方式來寫這個嗎?它有效,但有點難看。一個數字內的正則表達式模式
輸入的數據是這樣的:125100001個
前兩個數字是年份,接下來的兩個是週數,以及最後5串行。我想驗證一個angular input[number] pattern選項的週數不超過52。基本上只是所以在這裏充分利用$誤差場:)
是:
^\d\d(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-2]){1}\d{5}$
就本週部分:
[0-4]\d|5[0-2]
所以整個正則表達式是:
^\d\d([0-4]\d|5[0-2])\d{5}$
感謝您指出這一點!這直接回答了我的問題,儘管我對ghoti的原始邏輯有一些很好的討論。 –
這對於OP來說可能不是問題,但是這將允許「00」爲一週數。 – zx81
使用這個:
^(\d{2})([0-4][1-9]|[1-5]0|5[12])(\d{5})$
注
(0[1-9]|1[0-2])
的驗證一個月:01-12([0-4][1-9]|[1-5]0|5[12])
的驗證周:01-52第二組圓括號很聰明。第一部分雖然,我做了**沒有**有限制的一年。任何值,00-99都是有效的。 –
我錯過了。出於某種原因,我認爲前兩位數字是一個月。只是將它改爲'\ d {2}'(類似於串行) – zx81
什麼是編程語言 –
在Angular.js中實現,如我在輸入[數字]模式選項中的鏈接所述。 –
這是不是一個好主意,完全在正則表達式 –