博客
关于我
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/

你可能感兴趣的文章
openSUSE 13.1 Milestone 2 发布
查看>>
openSUSE推出独立 GUI 包管理工具:YQPkg,简化了整个软件包管理流程
查看>>
OpenVP共用账号 一个账号多台电脑登录
查看>>
OpenVSwtich(OVS)Vlan间路由实战 附实验环境
查看>>
Openwrt LuCI模块练习详细步骤
查看>>
openwrt_git_pull命令提示merger冲突时如何解决?
查看>>
OpenWrt包管理软件opkg的使用(极路由)
查看>>
OpenWrt固件编译刷机完全总结
查看>>
Open××× for Linux搭建之二
查看>>
Open×××有线网络时使用正常,无线网络时使用报错的解决方案
查看>>
Opera Mobile Classic Emulator
查看>>
Operation not supported on read-only collection 的解决方法 - [Windows Phone开发技巧系列1]
查看>>
OperationResult
查看>>
Operations Manager 2007 R2系列之仪表板(多)视图
查看>>
operator new and delete
查看>>
operator new 与 operator delete
查看>>
operator() error
查看>>
OPPO K3在哪里打开USB调试模式的完美方法
查看>>
oppo后端16连问
查看>>
Optional类:避免NullPointerException
查看>>