我有以下問題:用於匹配正則表達式的表達式範圍
- 字符串是通過正則表達式進行驗證。
- 該字符串包含用分號分隔的範圍或單個值,例如,
100-200;10;2300-3400;34;
- 每個數字的最大值是
99999
。 - 字符串中不允許有字母。
我有什麼到現在:
^([0-9]{1,5}[-][0-9]{1,5}[;])? ^([0-9]{1,5}[;])? ([0-9]{1,5}[-][0-9]{1,5}[;])?([0-9]{1,5}[;])? ([0-9]{1,5}[-][0-9]{1,5}[;])*$? ([0-9]{1,5}[;])*$?
因此我正則表達式是由三個可選組類型:
- 的起點:
^([0-9]{1,5}[-][0-9]{1,5}[;])? ^([0-9]{1,5}[;])?
- 中東:
([0-9]{1,5}[-][0-9]{1,5}[;])?([0-9]{1,5}[;])?
- 結束:
([0-9]{1,5}[-][0-9]{1,5}[;])*$? ([0-9]{1,5}[;])*$?
這個正則表達式並沒有解決我的問題,雖然輸入表達式中的字母常常返回true,但應返回false。任何想法如何解決這個問題?
這是正則表達式的通過RB註釋以下的簡化版本:
- 的起點:
^(\d{1,5}\-\d{1,5};)? ^(\d{1,5};)?
- 中東:
(\d{1,5}\-\d{1,5};)? (\d{1,5};)?
- 結束:
(\d{1,5}\-\d{1,5};)*$? (\d{1,5};)*$?
負的'-10-10'範圍和下降範圍'200-100'怎麼樣? – fubo
負範圍是不允許的,降序的是 – Chris
爲什麼不直接使用字符串拆分,先用分號分隔然後再用破折號。最後使用int.TryParse。 – jdweng