正規表現でいくつかの文字列をチェックしていますが、どういうわけか完璧ではありません。理由はわかりません。これらの文字のみを含む文字列を許可したいと思います。
- AからZ
- 0から9
- 。
- %
- /
- {スペース}
- +
- $
だから私はこの正規表現で十分だと思いました:
Regex("[^A-Z0-9.$/+%\\- ]$")
しかし、いくつかの文字列では、実際には機能しません。私は小さな例を作りました:
static Regex regex = new Regex("[^A-Z0-9.$/+%\\- ]$");
static void Main()
{
string s;
Console.WriteLine("check: \n");
s = "?~=) 2313";
Console.WriteLine(s + ": " +IsValid(s));
s = "ÄÜÖ";
Console.WriteLine(s + ": " + IsValid(s));
s = "Ü~=) 2313";
Console.WriteLine(s + ": " + IsValid(s));
s = "Ü 2313";
Console.WriteLine(s + ": " + IsValid(s));
s = "~=) 2313 Ü";
Console.WriteLine(s + ": " + IsValid(s));
s = "ÜÜÜ";
Console.WriteLine(s + ": " + IsValid(s));
s = "~=)";
Console.WriteLine(s + ": " + IsValid(s));
s = "THIS--STRING $1234567890$ SHOULD BE VALID.%/ +";
Console.WriteLine(s + ": " + IsValid(s));
Console.ReadKey();
}
public static bool IsValid(string input)
{
if (regex.IsMatch(input)) return false;
return true;
}
出力として私は得る:
1.、3。および4.は真ですが、これは間違っています。正規表現の何が問題になっていますか?何か案は?ありがとうございました