这是要检查的必需格式:
{low limit} - {high limit}Volts
或者
{low limit} to {high limit}Volts
例如:
50 - 150Volts
50 to 150Volts
低限必须低于上限。 在' - '之前和之后允许空间。或者'到'
如果可能在Regex中那么那将非常有帮助
答案 0 :(得分:5)
可以检查字符串是否具有此格式。但是,不可以检查第一个值是否低于第二个值。
这是因为这些数字只是正则表达式的一系列字符。
但是,如果您不仅限于Regex,则可以使用正则表达式解析字符串,将每个数字放在一个组中。然后将组的值解析为整数,并在C#中进行比较。
(?<min>\d+) (-|to) (?<max>\d+)Volts
如果空格是强制性的,那么这可能是你的正则表达式。
if (int.Parse(match.Groups["min"].Value) < int.Parse(match.Groups["max"].Value))
{
// ok
}
这显示了访问组,解析和比较的原则......
答案 1 :(得分:0)
([0-9]+)[ ]?(\-|to)[ ]?([0-9]+)Volts
此正则表达式与您的示例匹配。
你无法检查是否低=&lt;正则表达式中的高位,但您可以使用第一个和第三个捕获组来获取值并进行比较。
答案 2 :(得分:0)
这个正则表达式应该是您所需要的:(\d+)(\s+(-|to)\s+)(\d+)Volts
。如果空格是必填项而在文本中不是可选的,那么您可以简化它并用空格替换\s+
。
答案 3 :(得分: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])?
...
});