匹配“双,双,双,双”字符串

时间:2018-09-09 10:46:48

标签: c# regex wpf validation

我想使用正则表达式匹配“双精度,双精度,双精度,双精度”字符串(用于在WPF应用程序中检查BorderThickness)

我在stackoverflow上发现了许多类似的答案,但是没有一个对我不起作用。

我在this page上找到了[0-9]{4},[0-9]{4},但是它不起作用,因为我在字符串中需要- + , .个字符。

这是我的代码:

private static readonly Regex _regex = new Regex("[0-9]{4},[0-9]{4}"); 

public static bool TextIsThickness(string text)
{
    return !_regex.IsMatch(text);
}

示例输入字符串:

-1.4,2.75,0,10

注意:这不是重复的,我需要4个双引号,以逗号分隔,与“ Regular expression for double number range validation”不同

请告诉我该怎么做?

3 个答案:

答案 0 :(得分:1)

您只需要查找一个双精度正则表达式,然后使用,作为分隔符将其重复4次:

^(?:x,){3}x$

其中x是1倍的模式。

从此post来看,双精度模式为:

[+-]?([0-9]*[.])?[0-9]+

因此整个正则表达式将是:

^(?:[+-]?([0-9]*[.])?[0-9]+,){3}[+-]?([0-9]*[.])?[0-9]+$

Demo

答案 1 :(得分:0)

(([\+\-]\s?)?\d+(\.\d+)?,){3}([\+\-]\s?)?\d+(\.\d+)?

如果我理解正确,那么您想查找任何序列: 可能以+ or -运算符开头,也可能不以.开头,运算符后面可能有空格,也可能没有空格。然后是一个1或多个数字的序列,可能是也可能不是其后跟文字,和一个或多个数字。所有这4次。前三个都以文字*_def结尾。

答案 2 :(得分:0)

要回答您的问题,可以使用以下RegEx:

(?:[+-]?\d+\.?\d*,){3}(?:[+-]?\d+\.?\d*)

它将匹配: 以+-开头/不是开头的数字,后跟一个或多个数字,可选的.(点),后跟零个或多个以,结尾的数字(逗号)。重复3次,第四次不以逗号结尾。这符合您的示例。