我用我的正则表达式检查了一些字符串,但不知何故它并不完美。我不知道为什么。我想允许只有这些字符的字符串:
- 从头到尾
- 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. 是正确的,但这是错误的。我的正则表达式有什么问题?有任何想法吗?谢谢