這裏是那種正則表達式是如何運作的
ones: ^[0-9]$ // just set the numbers -- matches 0 to 9
tens: ^[1-3]?[0-9]$ //set max tens and max ones -- matches 0 to 39
tens where max does not end in 9 ^[1-2]?[0-9]$|^[3][0-4]$ // 0 to 34
only tens: ^[1][5-9]$|^[2-3][0-9]$|^[4][0-5]$ // 15 to 45
在這裏,讓我們挑選一個任意數量1234年至2345年
^[1][2][3][4-9]$|
^[1][2][4-9][0-9]$|
^[1][3-9][0-9][0-9]$|
^[2][0-2][0-9][0-9]$|
^[2][3][0-3][0-9]$|
^[2][3][4][0-5]$
https://regex101.com/r/pP8rQ7/4
基本上中間系列的結局總是需要是一個直線範圍,可以達到9 ,除非我們正在處理的地方,如果它不能,每當我們有一個不能從0開始的值,並且一旦我們達到一個不能以9結尾的值並提前中斷並將其設置爲下一個條件時,你必須向上建立它。
注意模式,因爲每個地方固化。還要記住,在處理從較低到較高的地方時,可選的操作員?應該使用。
它有點複雜,但它幾乎不可能設計一個定製的範圍與思考。
如果您更具體,我們可以製作一個確切的示例,但通常這是如何完成的:beginning-range|middle-range|end-range
在某些情況下,您應該只需要開始或結束範圍,如最小或最大不結束9.這個?意味着它是可選的範圍。 (例如,在第一種情況下,它可以讓我們擁有單數和雙數。
所以100 - 1999年這是相當簡單實際上,因爲你有很多9的和0的
/^[1-9][0-9][0-9]$|^[1][0-9][0-9][0-9]$/
https://regex101.com/r/pP8rQ7/1
注意:單值不需要範圍[N]我只是說他們可讀性。
你能否請你更新你的問題1)你的樣本輸入與預期的行爲2)你究竟嘗試了什麼以及如何3)以及當然你的編程語言。 –
我建議你看看[如何編寫一個匹配IPv4的正則表達式](https://blogs.msdn.microsoft.com/oldnewthing/20060522-08/?p=31113/)。這不是一個答案(甚至是一個論壇),但是讀起來很有趣,並強調了爲什麼你可以用正則表達式做很多事情,但是你不應該總是這樣做。至於你的問題,如果數字不固定,你顯然不能寫一個靜態正則表達式,如果你可以使用一種編程語言來建立表達式,你可以用這種語言來比較一下數字的簡單方式。 –
@WiktorStribiżew嘗試按照您的要求更新 – DaCh