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

时间:2013-11-06 12:17:40

标签: c# regex

我有正则表达式只允许点和拉丁字母。但这个表达式错过了存在空间的字符串。在我的代码中,我需要看到真假。但我看到真实而真实。怎么修好?

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

2 个答案:

答案 0 :(得分:1)

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

 ^[a-zA-Z]+$

答案 1 :(得分:1)

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

您需要

  • 逃离 .,在\前面放置@"[a-zA-Z]|\.",或
  • 将其移到角色类中,不再需要对其进行转义,只需@"[a-zA-Z.]"

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