仅允许使用字母数字字符

时间:2014-02-25 15:09:10

标签: asp.net

我想只允许使用字母数字密码,我已经编写了以下代码来匹配相同的密码 但同样不起作用

  

Regex.IsMatch(txtpassword.Text,“^ [a-zA-Z0-9 _] * $”)永远不会返回false   即使我输入密码测试(不包含任何数字)。

ElseIf Regex.IsMatch(txtpassword.Text, "^[a-zA-Z0-9_]*$") = False Then
 div_msg.Attributes.Add("class", "err-msg")
 lblmsg.Text = "password is incorrect"

I have tried this also
Dim r As New Regex("^[a-zA-Z0-9]+$")
Dim bool As Boolean
bool = r.IsMatch(txtpassword.Text) and for txtpassword.Text = '4444' , bool is coming true i dont know what is wrong.

3 个答案:

答案 0 :(得分:1)

首先,'_'不是有效的字母数字字符。 见http://en.wikipedia.org/wiki/Alphanumeric

然后,再看一下你的正则表达式。

[A-ZA-Z0-9 _] *

这可以匹配0个或更多字母数字字符或0个或更多个“_”字符。 使用此模式,密码'&#&#^ $'将返回TRUE。

您可能希望测试一个或多个不是字母数字的字符。如果该测试返回TRUE,则抛出错误。

希望这有帮助。

答案 1 :(得分:1)

尝试以下表达式:

([^a-zA-Z0-9]+)

如果您的密码包含任何非字母数字字符,则匹配。 如果你得到了匹配,请进行错误处理。

答案 2 :(得分:1)

因此,根据您在问题中使用的正则表达式,出现您想要一个包含一个小写和大写字母,一个数字和一个_的密码;所以这里有一个正则表达式:

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*_).{4,8}

Regular expression visualization

Debuggex Demo

{4,8}表示密码的长度;你可以相应地设置它。