我想使用正则表达式匹配“双精度,双精度,双精度,双精度”字符串(用于在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”不同
请告诉我该怎么做?
答案 0 :(得分:1)
您只需要查找一个双精度正则表达式,然后使用,
作为分隔符将其重复4次:
^(?:x,){3}x$
其中x
是1倍的模式。
从此post来看,双精度模式为:
[+-]?([0-9]*[.])?[0-9]+
因此整个正则表达式将是:
^(?:[+-]?([0-9]*[.])?[0-9]+,){3}[+-]?([0-9]*[.])?[0-9]+$
答案 1 :(得分:0)
(([\+\-]\s?)?\d+(\.\d+)?,){3}([\+\-]\s?)?\d+(\.\d+)?
如果我理解正确,那么您想查找任何序列:
可能以+ or -
运算符开头,也可能不以.
开头,运算符后面可能有空格,也可能没有空格。然后是一个1或多个数字的序列,可能是也可能不是其后跟文字,
和一个或多个数字。所有这4次。前三个都以文字*_def
结尾。
答案 2 :(得分:0)
要回答您的问题,可以使用以下RegEx:
(?:[+-]?\d+\.?\d*,){3}(?:[+-]?\d+\.?\d*)
它将匹配:
以+
或-
开头/不是开头的数字,后跟一个或多个数字,可选的.
(点),后跟零个或多个以,
结尾的数字(逗号)。重复3次,第四次不以逗号结尾。这符合您的示例。