2010-12-21 42 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

受け入れ可能な文字のリストがかなり小さい場合は、次のような正規表現を使用できます。

ここで使用されている正規表現は、azと0-9の任意の文字(空白文字[]内にあるもの)を含み、これらの文字が1つ以上あることを示します(+記号 - 0以上の場合は*を使用できます)。最後のオプションは、大文字小文字を無視するように正規表現パーサに指示します。

これは、文字、数字、またはスペース以外のものでは失敗します。祝福リストに文字を追加するには、角括弧の中に追加します。

34

シンプル:

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

なぜこの回答がアップされていませんか?正確で素早く私に見えます。そのような簡単な問題のために正規表現の世界に潜入するよりも、より良い方法を提供する –

+0

@MarcelloGrechiLins Regexは完全に有効で、コンパイルされたRegexを使用して大規模な文字列で再利用する方が高速です。いつものようにソフトウェア開発にはトレードオフがあります。 :-) –

+0

私は実際にこれを投票しています。最小限のテストでは、\ nのために真実が戻ってきます。正規表現は少なくともそれを実際の特殊文字に制限します。 – Charles

3

は、この方法を試してみてください。

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

     return false; 
    }