2016-06-06 27 views
0

構建10到240之間的數字和10到360之間的另一個正則表達式的最佳方法是什麼?正則表達式的數字

+1

你爲什麼還要考慮這個正則表達式? –

回答

1

正則表達式處理數字並不好。除非這是你得到的唯一選擇,否則你應該選擇另一種解決方案。

10-240^(?:2(?:[0-3]\d|40)|1\d\d|[1-9]\d)$

說明:

  1. ^:錨匹配字符串的開頭

  2. (?是:非捕獲組(比捕捉更好的性能組)。我使用這些交替。

  3. 2:文字字符 '2'

  4. [0-3]:0和3

  5. \d之間的單一數字:一個數字字符(0-9)

  6. |:或者

3-6 。 2(?:[0-3]\d|40):以2開頭的數字,後跟0-3和任意數字或字面上的'40'。該匹配200-240

  1. |1\d\d:或者一個後跟兩位數字(0-9)。那匹配100-199。

  2. |[1-9]\d:或1-9之間的數字後跟任意數字(0-9)。那場比賽10-99。

  3. $:匹配字符串末尾的錨點。

測試在這裏:https://regex101.com/r/rO4fZ0/1

10-360^(?:3(?:[0-5]\d|60)|[12]\d\d|[1-9]\d)$

  1. 3(?:[0-5]\d|60):文字字符3後跟0-5任何數字或逐字匹配60 300 -360。

  2. |[12]\d\d:或一個或兩個後跟兩位數字(0-9)。那匹配100-299。

  3. |[1-9]\d:或1-9之間的數字後跟任意數字(0-9)。那場比賽10-99。

測試在這裏:https://regex101.com/r/lD8oM4/1

1

這樣做的最好辦法,是用測試儀,http://regexr.com

這裏是正則表達式爲10至240匹配。

^(([1-9][0-9])|(1[0-9][0-9])|(2[0-3][0-9])|(240))$ 

但是,我確實認爲這可能不是您想要實現的功能的正確工具。

Mike

+0

你錯過了140-199 .... –

+0

奧普斯,謝謝!修改 –

+1

故事的道德 - 始終使用測試儀並測試您的RegEx' –