使用 Regular Expression 驗證密碼

[转载] 使用 Regular Expression 驗證密碼
原文链接:[url]http://blog.miniasp.com/post/2008/05/Using-Regular-Expression-to-validate-password.aspx[/url]


以前我都沒想過可以用 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}$");
這樣一來你知道如何融會貫通了嗎?^_^
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
### 回答1: 正则表达式在编程中主要用于字符串匹配和模式识别。它可以被用于验证输入的有效性,如邮件地址、电话号码等;还可以用于搜索和替换文本中的内容,以及从大量文本数据中提取有用信息。 常用编程语言,如 Python、Java、C++ 等都内置了正则表达式库,开发者可以直接调用这些库中的函数实现正则表达式的功能。 例如在 Python 中,可以使用 `re` 库的 `re.search` 函数在字符串中搜索符合正则表达式的内容,以下是一个简单的例子: ```python import re text = "My phone number is 123-456-7890" phone_number_regex = r'\d{3}-\d{3}-\d{4}' match = re.search(phone_number_regex, text) if match: print("Phone number found:", match.group()) else: print("Phone number not found") ``` 输出结果: ``` Phone number found: 123-456-7890 ``` ### 回答2: 正则表达式是一种用来匹配字符串模式的工具,能够帮助快速有效地在文本中搜索、替换、验证和提取字符串。在编程中,可以通过正则表达式来实现以下功能: 1. 搜索匹配:使用正则表达式可以在字符串中快速搜索匹配指定模式的文本。比如,可以使用正则表达式搜索一个字符串中是否存在某个特定的单词或字符序列。 2. 替换文本:正则表达式还可以用来替换字符串中匹配到的文本。通过指定一个正则表达式和替换字符串,可以将匹配到的文本快速替换为指定的内容。 3. 字符串验证:正则表达式也可以用来验证一个字符串是否符合特定的模式。比如,可以使用一个正则表达式验证一个字符串是否符合电话号码的格式。 4. 提取数据:使用正则表达式可以从字符串中提取出符合特定模式的数据。比如,可以使用正则表达式提取一个字符串中的所有数字或Email地址。 5. 校验输入:在输入验证方面,正则表达式可以用来校验用户输入的数据。比如,我们可以使用正则表达式来验证用户输入的邮箱地址或密码是否符合要求。 总之,正则表达式是一种强大、灵活且广泛应用于编程中的工具。掌握正则表达式的使用可以极大地提高处理字符串的效率和准确性。 ### 回答3: 正则表达式(Regular Expression)在编程中被广泛使用,用于处理和匹配文本数据。它是一种强大的字符串匹配和替换工具,具有简洁高效的特点。 在编程中,正则表达式可以用于以下场景: 1. 文本匹配:通过正则表达式可以根据规则匹配特定模式的文本,比如检查字符串是否符合特定的格式要求。例如,可以使用正则表达式验证一个电话号码是否是有效的手机号。 2. 字符串替换:正则表达式可以替换文本字符串的某些部分。例如,可以使用正则表达式将一个文本中所有的邮箱地址替换为特定的字符串。 3. 数据提取:在文本中提取特定的信息。正则表达式可以帮助我们从一个字符串中提取出需要的数据,如提取出一个网页中的所有链接。 4. 输入验证:在编程过程中,可以使用正则表达式验证用户输入的合法性。例如,可以使用正则表达式验证用户输入的密码是否符合规定的复杂度要求。 5. 日志分析:在大规模数据中,正则表达式可以帮助我们快速定位和提取所需要的信息。例如,在服务器日志中,可以使用正则表达式提取出指定时间段内的错误信息。 总而言之,正则表达式是编程中非常有用的工具,能够帮助我们快速处理和匹配文本数据。在不同编程语言中,都有内置的正则表达式库,可以轻松地调用和运用。掌握正则表达式的基本语法和应用技巧,对于编程工作和文本处理非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值