正则表达式允许点和拉丁字母



我有正则表达式只允许点和拉丁字母。但是这个表达式缺少存在空格的字符串。在我的代码中,我需要看到真假。但我看到了真实和真实。它是如何解决的?

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);

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

 ^[a-zA-Z]+$

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

你要么需要

  • 逃离.,在它前面放一个,给@"[a-zA-Z]|.",或者
  • 将其移动到字符类中,不再需要对其进行转义,从而提供@"[a-zA-Z.]"

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

最新更新