前提
公司内部推行安全制度,要求密码必须是八位以上,而且必有至少包含一个小写或者大写字母,数字,特殊字符,面对这样的密码,感觉领导也是够操心的了啊。在公司小编真是闲啊,所以动手实现了一下,后来看了人家的代码,发现自己太low了。
我就不说那很low的做法了,使用了C#中正则表达式Regex直接进行验证。直接看代码
using System.Text.RegularExpressions; string s = @" (?=.*[0-9]) #必须包含数字 (?=.*[a-zA-Z]) #必须包含小写或大写字母 (?=([\x21-\x7e]+)[^a-zA-Z0-9]) #必须包含特殊符号 .{8,30} #至少8个字符,最多30个字符 "; Regex reg = new Regex(s,RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace); if (!reg.IsMatch(textBox1.Text.Trim())) { MessageBox.Show("密码必须包含8个字符,\r\n并且至少有1个大写字母、\r\n1个小写字母、\r\n1个数字、\r\n1个特殊字符!"); textBox1.Focus(); return; }
使用C#中的正则表达式,一个输入格式,两行校验代码,就这么简单的解决了这个问题。既然提到了正则表达式,那就好好的学习一下吧。
在C#中使用引入正则表达式
using System.Text.RegularExpressions;之后就是关于正则表达式使用的一些基本语法了。
判断是否匹配
在Regex对象中,可以使用Regex.IsMatch(string)方法。
如果返回值为false,字符串中未包含要求匹配的内容,默认值为true,则证明字符串中包含,符合条件。
关于匹配的问题还会涉及到Matches集合,再利用Matches集合进行获取匹配次数,获取匹配内容,以及捕获正则表达式中的内容。
Regex.Matches("abc123Count").count;
RegexOptions方法,指的的枚举,其中枚举的有效值有很多,具体的内容推荐一篇博客《C#正则表达式Regex类的用法》在这主要讲解两个,因为这段代码中用到的啊。
1、IgnorePatternWhitespace表示去掉模式中的非转义空白,并启用由#标记的注释,这个注意到我们的代码中是有#标识的注释的。
2、Multiline表示多行模式,改变元字符^和$的含义,它们可以匹配行的开头和结尾,在C#中^和$是有特殊意义的,所以要考虑全面啊。
这是C#中正则表达式非常基础的应用,其实之前在JavaScript中也学习过着这些内容,但是仅仅是学习过而已。大家都知道语言是相通,可是就是没有学过真正的让语言变得灵活起来,还是需要慢慢学习啊。
【总结】
关于C#中的学习真是学无止境,自己会的太少了,还是慢慢积累吧,把语言灵活运用起来,这才是目标啊。
原文链接:https://www.f2er.com/regex/358669.html