[转载] 使用 Regular Expression 驗證密碼
原文链接:
http://blog.miniasp.com/post/2008/05/Using-Regular-Expression-to-validate-password.aspx
以前我都沒想過可以用 Regular Expressions 驗證複雜格式的密碼,原來可以用 Regular Expression 中的群組建構式達成這個目的,例如說密碼的條件是這樣:
至少有一個數字
至少有一個小寫英文字母
至少有一個大寫英文字母
字串長度在 6 ~ 30 個字母之間
那麼你的 Regular Expression 可以長這樣:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,30}$
在這段 Regular Expression 的語法中值得注意的就是 (?=.*\d) 這段語法,這段於法又稱做「右合樣 (Positive Lookahead)」,右合樣(或左合樣)語法所佔用的寬度為 0,也就是說這段語法本真不會佔用比對的字元,僅僅只是 Regular Expression 中的一種「判斷式」而已,右合樣 (Positive Lookahead)會判斷右邊緊接著的字元是否符合比對條件,如果符合條件才會繼續比對下去。
所以剛剛這段於法的解釋大致可以這樣說明:
(?=.*\d) 與 (?=.*[a-z]) 與 (?=.*[A-Z]) 寬度都會是零,所以整個字串比對會以 .{6,30} 為主,但比對之前會分別比對 (?=.*\d) 與 (?=.*[a-z]) 與 (?=.*[A-Z]) 這三個判斷式,都判斷成功才會進行 .{6,30} 的比對。所以 (?=.*\d) 的 .*\d 就是說右邊的文字中一定要出現一個數字符號,(?=.*[a-z]) 的 .*[a-z] 就是說右邊的文字中一定要出現一個小寫字母,(?=.*[A-Z]) 的 .*[A-Z] 就是說右邊的文字中一定要出現一個大小字母,最後才會比對 .{6,30} 也就是說比對字串的長度必須在 6 ~ 30 個字的任意字元。
如果你的條件修改成:
至少有一個數字
至少有一個大寫或小寫英文字母
至少有一個特殊符號
字串長度在 6 ~ 30 個字母之間
那麼你的 Regular Expression 可以長這樣(以 C# 作範例):
Regex regex = new Regex(@"^(?=.*\d)(?=.*[a-zA-Z])(?=.*\W).{6,30}$");
這樣一來你知道如何融會貫通了嗎?^_^
分享到:
相关推荐
eclipse regular expression 插件
Regular Expression 简介.pdf 正则表达式
Regular Expression Pocket Reference
GNU Regex 程式库是 GNU 发展,提供操作比对 Regular Expression 文字字串的程式库,也就是使用 GNU Regex 程式库,可以作到以下的功能: 比对一字串是否完全与 Regular Expression 相幅合。 在一字串中寻找与 ...
Regular Expression Quick Reference
mastering regular expression
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep...
正则表达式资料全集.rar Regular Expression Syntax Reference
Regular Expression Recipes for Windows Developers.pdf
介绍正则表达式的英文slide 使用Python和Java实现相应的功能 文件已加密,可在下载后与我联系,免费获得解锁密码
Oracle offcial regular expression book
基于Regular Expression的数据匹配验证.pdf
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式...如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。
regular expression processor, 将正则表达式转换成NFA,接着讲NFA转换成DFA,并输出DFA。同时可以生成DOT文件,以提供给graphviz生成图形界面。
A Regular Expression Wrapper Using ATL in C++Src.zip
一个基于C#实现的Regular Expression正则表达式验证工具程序代码。
正则表达式(regular expression) 原著:笑容 创作于:2004年05月03日 最后更新:2004年05月04日 21:12 引用地址:正则表达式(regular expression) 版权声明:使用创作公用版权协议 ...
a tool which is used to design the regular expression a tool which is used to design the regular expression a tool which is used to design the regular expression a tool which is used to design the ...