2010-12-21 162 views
21

如何检查字符串以确保其仅包含数字,字母或空格?

回答

4
String test_string = "tesintg#[email protected]#"; 
if (System.Text.RegularExpressions.Regex.IsMatch(test_string, "^[a-zA-Z0-9\x20]+$")) 
{ 
    // Good-to-go 
} 

一个例子可以在这里找到:http://ideone.com/B1HxA

2

使用下面的正则表达式验证字符串,以确保它包含数字,字母,或仅空间:

[a-zA-Z0-9 ] 
12
string s = @"$KUH% I*$)OFNlkfn$"; 
var withoutSpecial = new string(s.Where(c => Char.IsLetterOrDigit(c) 
              || Char.IsWhiteSpace(c)).ToArray()); 

if (s != withoutSpecial) 
{ 
    Console.WriteLine("String contains special chars"); 
} 
3

如果接受字符列表是非常小的,你可以使用正则表达式是这样的:

Regex.IsMatch(items, "[a-z0-9 ]+", RegexOptions.IgnoreCase); 

此处使用的正则表达式会查找az和0-9中的任何字符,包括空格(方括号[]中的内容),还有一个或多个这些字符(+符号 - 你可以使用*为0或更多)。最后的选项告诉正则表达式解析器忽略大小写。

这将无法在任何不是字母,数字,或空间。要将更多字符添加到祝福列表中,请将其添加到方括号中。

34

简单:

function HasSpecialChars(string yourString) 
{ 
    return yourString.Any(ch => ! Char.IsLetterOrDigit(ch)) 
} 
+1

为什么不是这个答案upvoted?对我来说似乎是正确和快速的。方式比跳水尤为明显进入正则表达式世界这样一个简单的问题 – 2015-02-04 16:21:58

3

尝试这种方式。

public static bool hasSpecialChar(string input) 
    { 
     string specialChar = @"\|!#$%&/()=?»«@£§€{}.-;'<>_,"; 
     foreach (var item in specialChar) 
     { 
      if (input.Contains(item)) return true; 
     } 

     return false; 
    }