使用C#的正则表达式匹配(简单??)正则表达式

时间:2008-10-10 12:47:28

标签: c# regex

好的抱歉这可能看起来像一个愚蠢的问题,但我无法弄清楚这件事:

我正在尝试解析一个字符串,只是想检查它是否只包含以下字符:'0123456789dD +'

我尝试过很多东西,但是无法弄清楚要使用正确的正则表达式!


  Regex oReg = new Regex(@"[\d dD+]+");
  oReg.IsMatch("e4");
即使不允许e,

也会返回true 我尝试过很多字符串,包括Regex(“[1234567890 dD +] +”)......

它始终适用于Regex Pal但不适用于C#...

请建议并再次道歉这似乎是一个非常愚蠢的问题

6 个答案:

答案 0 :(得分:8)

试试这个:

@“^ [0-9dD +] + $”

开头和结尾的^和$分别表示输入字符串的开头和结尾。因此,在开始和结束之间仅允许所述字符。在您的示例中,如果字符串包含其中一个字符,则正则表达式匹配,即使它也包含其他字符。

@comments:谢谢。我修复了缺失的+和空格。

答案 1 :(得分:2)

哎呀,你忘记了界限,试试:

Regex oReg = new Regex(@"^[0-9dD +]+$");
oReg.IsMatch("e4");

^匹配文本流的开头,$匹配结束。

答案 2 :(得分:1)

匹配4;如果你想要整个字符串完全匹配,你需要^和$来终止正则表达式 - 即

    Regex re = new Regex(@"^[\d dD+]+$");
    Console.WriteLine(re.IsMatch("e4"));
    Console.WriteLine(re.IsMatch("4"));

答案 3 :(得分:1)

这是因为正则表达式也可以匹配部分输入,在这种情况下它只匹配“e4”的“4”。如果你想匹配整行,你必须用“^”(匹配行开头)和“$”(匹配行结束)包围正则表达式。

因此,为了使您的示例有效,您必须编写如下:

Regex oReg = new Regex(@"^[\d dD+]+$");
oReg.IsMatch("e4");

答案 4 :(得分:0)

我相信它会返回True,因为它找到了4.正则表达式中没有任何内容排除了结果中的字母e。

答案 5 :(得分:-1)

另一个选择是反转所有内容,因此它匹配您不想允许的字符:

Regex oReg = new Regex(@"[^0-9dD+]");
!oReg.IsMatch("e4");