本文共 3281 字,大约阅读时间需要 10 分钟。
正则表达式作为一项强大的文本处理工具,能够以简短的代码实现复杂的业务逻辑。掌握它不仅能提升开发效率,还能让文本处理变得更加便捷高效。本文将从密码校验、中文校验、文件路径校验等多个方面,分享正则表达式的实际应用案例。
密码的强度要求包括:必须包含大小写字母和数字,不能使用特殊字符,且长度在8-10个字符之间。以下正则表达式能够满足这一需求:
^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 该表达式的解释:
(?=.*\\d):确保密码中包含至少一个数字(?=.*[a-z]):确保密码中包含至少一个小写字母(?=.*[A-Z]):确保密码中包含至少一个大写字母.{8,10}:确保密码长度在8到10个字符之间要确保输入字符串仅包含中文字符,可以使用以下正则表达式:
^[\\u4e00-\\u9fa5]{0,}$ 该表达式的作用是匹配0到多个符合中文字符范围的字符。
由数字、26个英文字母或下划线组成的字符串可以通过以下正则表达式进行校验:
^\\w+$
这个表达式匹配一个或多个由字母、数字或下划线组成的字符序列。
电子邮件地址的正则表达式设计较为复杂,需要确保本地部分和域名部分的格式正确。以下是一个常用的邮件地址正则表达式:
[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])? 身份证号码的长度和结构因国家而异。以中国为例,15位和18位身份证号码的正则表达式分别为:
^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$日期格式的校验需要考虑平闰年等特殊情况。以下是一个用于“yyyy-mm-dd”格式的正则表达式:
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$ 金额的校验需要确保其精确到小数点后两位。以下是一个常用的正则表达式:
^[0-9]+(.[0-9]{2})?$ 国内手机号的正则表达式需要匹配13、15、18开头的号码:
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$ 判断IE浏览器版本的正则表达式如下:
^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$`
IP-v4地址的正则表达式如下:
\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b IP-v6地址的正则表达式较为复杂,但通常可以简化为:
(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])) 以下正则表达式可以用于检查URL是否以特定前缀开头:
if (!s.match(/^[a-zA-Z]+:\\/\\//)){ s = 'http://' + s; } 提取网页中的URL链接可以使用以下正则表达式:
^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)? 文件路径及扩展名的正则表达式如下:
^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?"<>|]+\\.txt(l)?$
Hex颜色代码的提取正则表达式为:
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$ 网页中图片的src属性可以通过以下正则表达式提取:
\\< *[img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*) 页面中超链接的提取可以使用以下正则表达式:
(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)> CSS属性的匹配可以使用以下正则表达式:
^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1} HTML注释的提取可以使用以下正则表达式:
<!--(.*?)-->
HTML标签的匹配可以使用以下正则表达式:
<\\/?\\w+((\\s+\\w+(\\s*=\\s*(?:".*?"|'.*?'|[\\^'">\\s]+))?)+\\s*|\\s*)\\/?>
以下是正则表达式的快速参考,方便查找相关语法:
[a-zA-Z0-9]\\d\\W\\s\\w\\d+(_*)[A-Z][a-z]<[^>]+>通过这些实用正则表达式,开发者可以快速实现各种文本处理任务,显著提升工作效率。
转载地址:http://qjgfk.baihongyu.com/