如何在C#中本地化密码验证?

时间:2009-09-25 20:47:06

标签: c# localization special-characters

我正在尝试本地化具有以下尝试验证密码文本框的逻辑的现有应用。我假设这不适用于具有特殊字符的语言,用户可以在文本框中键入。我对么?我认为我们不想限制用户输入非英文字符(即阿拉伯语,中文等)。或者,有什么我不理解的吗?

Regex ValidHex =
   new Regex("[A-Za-z1234567890_-]+", RegexOptions.IgnoreCase);
if (!ValidHex.IsMatch(e.Text))
{
   e.Handled = true;
}

4 个答案:

答案 0 :(得分:8)

您可以这样做以支持unicode字符:

[\p{L}\p{N}_-]+

作为旁注:是否有任何特定原因需要限制允许的字符?

答案 1 :(得分:6)

不要存储密码!

使用cryptographic hashing function哈希密码并对其进行比较。

答案 2 :(得分:1)

正则表达式不是特别好的,它限制用户选项并且不强制执行任何操作(密码'a'和'aaaaaaa'将通过)。该名称表明它是从验证Hex数字的表达式中采用的。你至少需要添加一个最小长度条件(在reg ex中或作为e.Text.Length> 8)。

一个更明智的表达方式将验证至少有一个字符组成了几个组,我挖出了这个:@"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)" See here。 再次,添加最小长度检查。

这个例子没有解决本地化的问题,它只允许非拉丁字符通过'。'并不认为它们满足[a-z]或[A-Z]的要求。

答案 3 :(得分:0)

您是否尝试使用\ w而不是A-za-z?我打赌这会解决本地化问题。

相关问题