博客
关于我
20个正则表达式,让你少写1,000行代码
阅读量:798 次
发布时间:2023-04-16

本文共 3281 字,大约阅读时间需要 10 分钟。

正则表达式入门与实用技巧

正则表达式作为一项强大的文本处理工具,能够以简短的代码实现复杂的业务逻辑。掌握它不仅能提升开发效率,还能让文本处理变得更加便捷高效。本文将从密码校验、中文校验、文件路径校验等多个方面,分享正则表达式的实际应用案例。

1. 密码强度校验

密码的强度要求包括:必须包含大小写字母和数字,不能使用特殊字符,且长度在8-10个字符之间。以下正则表达式能够满足这一需求:

^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

该表达式的解释:

  • (?=.*\\d):确保密码中包含至少一个数字
  • (?=.*[a-z]):确保密码中包含至少一个小写字母
  • (?=.*[A-Z]):确保密码中包含至少一个大写字母
  • .{8,10}:确保密码长度在8到10个字符之间

2. 中文字符校验

要确保输入字符串仅包含中文字符,可以使用以下正则表达式:

^[\\u4e00-\\u9fa5]{0,}$

该表达式的作用是匹配0到多个符合中文字符范围的字符。

3. 简单字符校验

由数字、26个英文字母或下划线组成的字符串可以通过以下正则表达式进行校验:

^\\w+$

这个表达式匹配一个或多个由字母、数字或下划线组成的字符序列。

4. 电子邮件地址校验

电子邮件地址的正则表达式设计较为复杂,需要确保本地部分和域名部分的格式正确。以下是一个常用的邮件地址正则表达式:

[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?

5. 身份证号码校验

身份证号码的长度和结构因国家而异。以中国为例,15位和18位身份证号码的正则表达式分别为:

  • 15位:^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$
  • 18位:^[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)$

6. 日期格式校验

日期格式的校验需要考虑平闰年等特殊情况。以下是一个用于“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)$

7. 金额校验

金额的校验需要确保其精确到小数点后两位。以下是一个常用的正则表达式:

^[0-9]+(.[0-9]{2})?$

8. 手机号校验

国内手机号的正则表达式需要匹配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}$

9. IE浏览器版本判断

判断IE浏览器版本的正则表达式如下:

^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$`

10. IP地址校验

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

11. IP地址-v6校验

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]))

12. URL前缀检查

以下正则表达式可以用于检查URL是否以特定前缀开头:

if (!s.match(/^[a-zA-Z]+:\\/\\//)){ s = 'http://' + s; }

13. 提取URL链接

提取网页中的URL链接可以使用以下正则表达式:

^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?

14. 文件路径及扩展名校验

文件路径及扩展名的正则表达式如下:

^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?"<>|]+\\.txt(l)?$

15. 提取颜色Hex代码

Hex颜色代码的提取正则表达式为:

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

16. 提取网页图片

网页中图片的src属性可以通过以下正则表达式提取:

\\< *[img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)

17. 提取页面超链接

页面中超链接的提取可以使用以下正则表达式:

(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>

18. 查找CSS属性

CSS属性的匹配可以使用以下正则表达式:

^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}

19. 提取注释

HTML注释的提取可以使用以下正则表达式:

<!--(.*?)-->

20. 匹配HTML标签

HTML标签的匹配可以使用以下正则表达式:

<\\/?\\w+((\\s+\\w+(\\s*=\\s*(?:".*?"|'.*?'|[\\^'">\\s]+))?)+\\s*|\\s*)\\/?>

正则表达式Cheat Sheet

以下是正则表达式的快速参考,方便查找相关语法:

  • 字符类:[a-zA-Z0-9]
  • 数字范围:\\d
  • 特殊字符:\\W
  • 空格:\\s
  • 单词字符:\\w
  • 数字和下划线:\\d+(_*)
  • 大写字母:[A-Z]
  • 小写字母:[a-z]
  • HTML标签:<[^>]+>

通过这些实用正则表达式,开发者可以快速实现各种文本处理任务,显著提升工作效率。

转载地址:http://qjgfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现检查一年是否是闰年算法 (附完整源码)
查看>>
Objective-C实现检查三个点在 3D 中是否共线算法(附完整源码)
查看>>
Objective-C实现检查字符串是否包含字母表中所有字母的算法(附完整源码)
查看>>
Objective-C实现检查字符是否为字母算法(附完整源码)
查看>>
Objective-C实现检查数字是否为偶数算法(附完整源码)
查看>>
Objective-C实现检查数字是否为奇数算法(附完整源码)
查看>>
Objective-C实现检查给定图中是否存在循环算法(附完整源码)
查看>>
Objective-C实现检查给定字符串是否在camelCase中算法(附完整源码)
查看>>
Objective-C实现检查给定的字符串是否在kebabcase中算法(附完整源码)
查看>>