正则表达式允许拉丁字母和数字编号,不允许空格



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

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

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

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

您当前的正则表达式 |。* 这实际上是"或任何字符(包括空格)"

你真的不需要正则表达式,你可以简单地使用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))但我发现方法组形式要干净得多。

最新更新