1

我有正则表达式只允许点和拉丁字母。但是这个表达式错过了存在空间的字符串。在我的代码中,我需要查看真假。但我看到的是真实的和真实的。它是如何固定的?

String str1="asdfgsadgs";
String str2 = "asd fgsx cgvbn adgs";
bool res = Regex.Match(str1, @"[a-zA-Z]|.").Success;
bool res2 = Regex.Match(str2, @"[a-zA-Z]|.").Success;
Console.WriteLine(res);
Console.WriteLine(res2);
4

2 回答 2

1

我想你想要这个正则表达式

 ^[a-zA-Z]+$
于 2013-11-06T12:20:21.600 回答
1

您的第一个问题是,.在正则表达式中,通常意味着“任何字符”。因此[a-zA-Z]|.表示“一个字母或任何字符”,并将匹配一个空格。

你要么需要

  • 逃避,通过在它前面.放一个, 给予, 或\@"[a-zA-Z]|\."
  • 将它移到字符类中,不再需要对其进行转义,给出@"[a-zA-Z.]"

正如Benoit 指出的那样,您的第二个问题是您的正则表达式正在询问“输入中是否存在与此类匹配的任何字符”,而您真正想问的是“输入中的每个字符是否与该类匹配”。我不会在这里复制他的答案。

于 2013-11-06T12:23:35.293 回答