如何寫一個匹配從0或000到180的數字範圍的正則表達式?正則表達式:數字範圍
回答
最簡單的方法是將字符串解析爲數字,然後查找該數字是否在適當的範圍內。
要做到這一點用純正則表達式,你需要確定的模式,它寫出來:
^(0?[0-9]{1,2}|1[0-7][0-9]|180)$
這有三種選擇:一爲單,雙位數字(允許前導零),其中每個數字可以是0到9之間的任何數字。另一個指定三位數字中每個數字允許的數字範圍。在這種情況下,這意味着第一個數字需要爲1,第二個數字在0到7之間,最後一個數字可以是任何內容。第三種選擇只適用於其他地方的模式不適合的數字180。
更簡單的方法可能是
^(0{0,2}[0-9]|0?[1-9][0-9]|1[0-7][0-9]|180)$
剛剛交替用於每個棘手數值範圍可能存在。
這樣做的竅門正如你也提到它必須匹配3位數字001,010,012等等這樣做謝謝 – Morten
試試這個:
^(0|[1-9][0-9]?|1[0-7][0-9]|180)$
對於三重000'都不是。 –
@Ionut G. Stan:我認爲只有匹配沒有前導零的數字太難了,這就是另一種選擇。 – Gumbo
我修改濃湯的:
^(00?0?|0?[1-9][0-9]?|1[0-7][0-9]|180)$
嘗試。
,如果你不關心負數
>> r = /\b(0?\d?\d|1[0-7]\d|180)\b/
=> /\b(0?\d?\d|1[0-7]\d|180)\b/
>> (0..200).map {|i| i.to_s =~ r }
=> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
>>
有一個在線工具來生成這些at UtilityMill.com對於你的問題,這將返回:
0*([0-9]{1,2}|1[0-7][0-9]|180)
我會打破這樣的範圍它可以很容易地在單獨的個人正則表達式中指定:
^(0|0[0-9][0-9]|1[0-7][0-9]|180)$
或者說,什麼是人類可讀的方面是相同的:
0 000-099 100-179 180
如果需要兩位數的範圍內,它只是一個加[0-9][0-9]
的正則表達式的問題。
此外,如果您在使用正則表達式時遇到問題,請嘗試以使正則表達式運算符儘可能清晰的方式指定它們 - 通常有一種方法可以使它們的功能更加清晰,特別是如果您正在執行此操作的語言允許您將正則表達式規範的各個部分分離爲單獨的列和行。
您忘記了一位數字1到9. –
不,我只讀「0或000到180」並解釋爲:0作爲一位數字,或者三位數的範圍爲000至180。當我說「如果你需要兩位數的範圍......」我應該也提到了一個數字範圍,所以對此你是正確的。 – lcv
我的兩分錢:
任何人發佈的回答這個問題應該已經測試了他們的正則表達式至少以下輸入:
應符合:0,00,000,5,05, 005,95,095,180
不應該匹配:0000,0095,181,190
我認爲約翰內斯羅塞爾寫的是約一樣好,你會得到:
^(0?[0-9]{1,2}|1[0-7][0-9]|180)$
PowerShell有助於驗證:'-20..200 |%{$ _;「{0:00}」 - f $ _;「{0:000}」 - f $ _} |%{if($ _-匹配「^(0?[0-9] {1,2} | 1 [0-7] [0-9] | 180)$」){Write-Host -fore green $ _} else {Write-Host - 前紅色$ _}}' – Joey
最近發佈rgxg
命令行工具產生符合特定數量範圍的正則表達式:
$ rgxg range -Z 0 180
(180|1[0-7][0-9]|0?[0-9]{1,2})
有關詳細信息,請參閱http://rgxg.sf.net。
您可以使用正則表達式如下
^([0-1]?[0-7]?[0-9])|180$
如果您需要它正好三位數字,您可以刪除?跡象 –
- 1. 數字範圍的正則表達式
- 2. 正則表達式的數字範圍
- 3. 正則表達式數字範圍
- 4. 正則表達式數字範圍prasing
- 5. 爪哇正則表達式數範圍
- 6. 正則表達式正則表達式 - 字符範圍,字邊界,斷言
- 7. 正則表達式或OR兩個範圍正則表達式
- 8. 修改數字和數字範圍表達式的正則表達式
- 9. 正則表達式匹配表達式貨幣數值範圍
- 10. 字符串加數字範圍的正則表達式
- 11. python:數字範圍到正則表達式匹配字符串
- 12. 從數字到特定字符的正則表達式範圍
- 13. 數字範圍和字符的正則表達式
- 14. 正則表達式匹配範圍或數字列表
- 15. 正則表達式範圍的數字或只是一個數
- 16. 正則表達式的貪婪範圍
- 17. perl正則表達式無效範圍
- 18. Java的正則表達式範圍
- 19. 正則表達式的具體範圍
- 20. 正則表達式範圍1-50
- 21. 正則表達式的年份範圍
- 22. ASP.NET正則表達式編號範圍
- 23. 正則表達式 - 可選範圍
- 24. 正則表達式編號範圍
- 25. 組正則表達式超出範圍
- 26. VBA +正則表達式+範圍。更換
- 27. 正則表達式 - 範圍(2-16)?
- 28. Graphite storage-aggregation.conf正則表達式範圍
- 29. 貨幣範圍正則表達式
- 30. 正則表達式匹配IP範圍?
http://www.regular-expressions.info/numericranges.html是一個非常有用的文章 – Bergi
我相信你可以使用這個包'的https:// github.com/dimka665 /範圍-regex'。它已經支持負值。當前的代碼沒有更新,因此您必須從該github資源下載它。 – swdev