2014-05-07 108 views
1

這是要檢查的格式要求:是否有可能做到這一點的正則表達式

{low limit} - {high limit}Volts

或者

{low limit} to {high limit}Volts

例:

50 - 150Volts 
50 to 150Volts 

和低限制必須小於上限。 「 - 」 空間之前和之後允許或「到」

如果可能的正則表達式,那麼這將是很有益的

回答

5

它可以檢查如果字符串格式。但它是而不是可能檢查第一個值是否低於第二個值。

這是因爲數字只是正則表達式的一個字符序列。

但是,如果您不僅限於正則表達式,還可以使用正則表達式解析字符串,將每個數字放在一個組中。然後將這些組的值解析爲整數並在C#中進行比較。

(?<min>\d+) (-|to) (?<max>\d+)Volts 

這可能是您的正則表達式,如果空格是強制性的。

if (int.Parse(match.Groups["min"].Value) < int.Parse(match.Groups["max"].Value)) 
{ 
    // ok 
} 

這說明訪問組,分析和比較的原則......

0
([0-9]+)[ ]?(\-|to)[ ]?([0-9]+)Volts 

此正則表達式的例子相匹配。

您不能檢查正則表達式中的low = <高,但您可以使用第一個和第三個捕獲組來獲取值並進行比較。

0

這個正則表達式應該是你需要的:(\d+)(\s+(-|to)\s+)(\d+)Volts。如果空格是強制性的,並且在文本中不是可選的,那麼您可以簡化它並用空格替換\s+

0
Regex.Replace(str, @"(\d+)\s*(?:-|to)\s*(\d+)", delegate(Match m) 
{ 
    // ... check also 
    m.Groups[1].Value // 50 
    m.Groups[2].Value // 150 

    //([1] < [2])? 
    ... 
}); 
+0

這正是我所需要的。 Hinek的建議也是正確的。 – user3514797

相關問題