【问题标题】:Match a "Double, Double, Double, Double" string匹配“Double, Double, Double, Double”字符串
【发布时间】:2019-02-14 01:22:24
【问题描述】:

我想使用正则表达式匹配“Double、Double、Double、Double”字符串(用于检查 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”不同

请告诉我该怎么做?

【问题讨论】:

  • @elgonzo ,他们没有白费,主要问题是你拿别人和自己比较,但是人和他们的智力和天赋水平,以及他们的身体条件不同,我有一个身体残疾和学习甚至写作和打字对我来说都不容易。
  • @UnbearableLightness ,我的情况并没有醒来。我需要 4 个 double 像 -2,1.5,4,0

标签: c# regex wpf validation


【解决方案1】:

你只需要找到一个双精度的正则表达式,然后用,作为分隔符重复4次:

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

x 是 1 双倍的模式。

从这个post,一个双精度的模式是:

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

所以整个正则表达式将是:

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

Demo

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:
      (([\+\-]\s?)?\d+(\.\d+)?,){3}([\+\-]\s?)?\d+(\.\d+)?
      

      如果我理解正确,你想找到任何序列: 这可能以 + or - 运算符开头,也可能不开始,运算符后面可能有也可能没有空格(如果有的话)。然后是 1 个或多个数字的序列,后面可能有也可能没有文字 .,以及一个或多个数字。所有这4次。前三个都以文字 , 结尾。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多