我有正则表达式只允许拉丁字母和数字编号并且不允许空格。但这个表达式错过了存在空间的字符串。在我的代码中,我需要看到真假。但我看到真实而真实。怎么修好?
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);
答案 0 :(得分:5)
尝试将正则表达式更改为:
^[A-Za-z0-9]+$
你现在有正则表达式。* *这是有效的"或任何charachter(包括空格)"
答案 1 :(得分:1)
你真的不需要正则表达式,你可以简单地使用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))
,但我发现方法组形式更清晰。