7

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

String str1="5asdfEDadgs2";
String str2 = "5 asdfgsadgs2";
String reg=@"^[a-zA-Z]|[0-9]|.*$"

bool res = Regex.Match(str1,reg). Success; //Must show true
bool res2 = Regex.Match(str2, reg).Success; //Must show false

Console.WriteLine(res);
Console.WriteLine(res2);
4

2 回答 2

10

尝试将您的正则表达式更改为:

^[A-Za-z0-9]+$

您在当前的正则表达式中拥有 |.* 这实际上是“或任何字符(包括空格)”

于 2013-11-06T15:01:19.427 回答
1

你真的不需要 Regex,你可以简单地使用char.IsLetterOrDigit和一点 LINQ :

String str1="5asdfEDadgs2";
String str2 = "5 asdfgsadgs2";

bool res = str1.All(char.IsLetterOrDigit); //True
bool res2 = str2.All(char.IsLetterOrDigit); //False

您也可以编写等效的代码str1.All(c => char.IsLetterOrDigit(c)),但我发现方法组形式更清晰。

于 2013-11-06T15:00:47.670 回答