正则表达式常学常忘,记规则不如记例子,记多不如记精,记例子就记最经典的。下面是本人珍藏的十个有用的正则表达式,不吝分享,以飨读者。

正则表达式要点

几个记忆点

  • 小括号:代表分组
  • 中括号:代表集合
  • 大括号:代表个数
  • 尖括号不是元字符,下划线不是元字符,但破折号是
  • \s和\S, \b和\B, \w和\W的是三对对偶子,“小正大否”, 也就是小写的表示匹配,大写的表示不匹配。 \s匹配任何空白字符,\b匹配单词边界,\w匹配单词,对应的大写字母刚好反之。

实例

下面以javascript语言为例,展示正则表达式的经典例子,基本覆盖了基本用法。

1. 多个空行变成单空行

经常遇到别人给的文本文件,里面出现多个空行,一般IDE格式化也无能为力,怎么办?正则表达式可以派上用场。

let lines = `
djaidjsia
lllds
daskldas
dasdlasdaskldakaskldsad
`
// str = lines.replace(/^(\s*\n){2,}/, "\n")
str = lines.replace(/^\s*[\r\n]|^\s+| +(?= )| +$|\s+$(?![^])/gm, '\n');
console.log(str)

在IntelliJ idea里可以运用上述表达式做全局替换。

2. 符合强度的密码

长度8到18位,至少1个字母,1个数字和1个特殊字符

/^(?=.\d)(?=.[a-z])(?=.[A-Z])(?=.[!@#KaTeX parse error: Expected group after '^' at position 1: ^̲&*()_-]).{8,18}/

3. 有效的身份证号码(十八位)

十八位的公民身份号码,排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

var pattern = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
console.log(p.test("11010519501130002X"));

4. 提取网页中所有超链接


(?i)<a([^>]+)>(.+?)</a>说明:
?i表示大小写敏感,[^>]+表示匹配任何字符串,但不包含>

5. 匹配HTML标签

<("[^"]*"|'[^']*'|[^'">])*><     #start with opening tag "<"(       #   start of group #1"[^"]*" #   only two double quotes are allow - "string"|      #   ..or'[^']*'  #   only two single quotes are allow - 'string'|      #   ..or[^'">] #   cant contains one single quotes, double quotes and ">")        #   end of group #1*        # 0 or more
>        #end with closing tag ">"
>

6. 匹配IP地址

^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.
([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$

7. 检查Email地址

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

8. 不包含字符串

不包含hello:

var pattern = /^((?!hello).)*$/
console.log(pattern.test('abhellocba'))
console.log(pattern.test('abhellcba'))

不包含hello,也不包含world:

pattern = /^((?!hello)(?!world).)*$/
console.log(pattern.test('abhellocba'))
console.log(pattern.test('abhellcba'))

9. 检查中文和CJK字符(中日韩字符)

指定中文的unicode编码区间来匹配中文:

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

检查CJK字符,采用:

([\u4e00-\u9fff]+|[\uff00-\uffef]+)

同理,还可以指定字符的unicode编码来匹配货币代码:

(?=.*\d+)(?=.*[\u00A5\uFFE5\uFFE1\u5713\uFF04\u20A4\u0024\u5186]+)

10. 匹配十六进制数

/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i

总结

太史公曰:正则表达式是程序员手中的利剑,能解决许多人生中不大不小的烦恼。不会正则表达式不足语编程。有这十个正则表达式防身,没人再敢欺负你。

十个值得珍藏的正则表达式相关推荐

  1. 有关古文的C语言编程题,这80道国学题,既经典又有趣!值得珍藏!

    原标题:这80道国学题,既经典又有趣!值得珍藏! 点击箭头所指的世界名著每日读,每日陪你有品位地阅读 编辑:世界名著每日读(ticesmall) 1."但愿人长久,千里共婵娟",其 ...

  2. php面试中的问题,十个值得深思的PHP面试问题

    十个值得深思的PHP面试问题 过来人在以往的面试中总结的10个值得深思的 PHP 面试问题,希望对你现在的面试有用,少走弯路,更多内容请关注应届毕业生网! Q1 第一个问题关于弱类型 $str1 = ...

  3. 10个值得珍藏的4K高清壁纸网站推荐

    作为打开电脑 or 手机第一眼就看到的桌面,给它设置一个赏心悦目的桌面壁纸还是必不可少的. 下面分享了 10 个值得珍藏的高清桌面壁纸网站,支持各种图片比例和分辨率,从 720P 到 4K.8K 应有 ...

  4. 11个值得珍藏的4K高清壁纸网站推荐

    前言 由于前几天因需求须找一些视觉素材,翻来覆去整了一些,整理了10个图片素材网站可以给大家收藏使用& 作为打开电脑 or 手机第一眼就看到的桌面,给它设置一个赏心悦目的桌面壁纸还是必不可少的 ...

  5. 我的世界基岩版种子和java版种子_我的世界:值得珍藏3个种子,号称MC最“完美”的三座山脉!...

    通常来说,<我的世界>很少生成一些神奇的山脉.只有巨大化世界地形下,才有可能产生神奇而美丽的山脉.而今天,我叫Minecraft将改变你的想法! 巨大化世界下的"山脉" ...

  6. 值得珍藏的81句生活哲理名言

    值得珍藏的81句生活哲理名言 1. 每天告诉自己一次,『我真的很不错』  2. 生气是拿别人做错的事来惩罚自己  3. 生活中若没有朋友,就像生活中没有阳光一样  4. 明天的希望,让我们忘了今天的痛 ...

  7. html如何实现选项卡切换思路,Tab选项卡切换完整思路及实现,值得珍藏

    原标题:Tab选项卡切换完整思路及实现,值得珍藏 这篇文章是从微信上转载过来的,原文作者是"Java实例解析",文章内容很棒,只是这个作者可能是一时看不到效果,所以没更新几篇就放弃 ...

  8. [读书社区]值得珍藏的81句名言...

    [读书社区]值得珍藏的81句名言... 1. 每天告诉自己一次,『我真的很不错』 2. 生气是拿别人做错的事来惩罚自己 3. 生活中若没有朋友,就像生活中没有阳光一样 4. 明天的希望,让我们忘了今天 ...

  9. 人生值得珍藏的42句话

    人生值得珍藏的42句话 [%=@title%] [%=@count%]票 [[%=@percent%]%] 1.生气是拿别人做错的事来惩罚自己. 2.明天的希望,让我们忘了今天的痛苦. 3.发光并非太 ...

最新文章

  1. 图解 Attention
  2. java连接oracle增删改查,java连接oracle数据库实现增删改查
  3. 深入理解ROS技术 【2】ROS下的模块详解(66-128)
  4. MyBatis 集成到Spring 的原理是什么?
  5. Apollo进阶课程⑭ | Apollo自动定位技术——三维几何变换和坐标系介绍
  6. 搭建深度学习推荐系统实战
  7. MapGuide应用开发系列(11)----创建自己的第一个MapGuide应用程序
  8. CS5463代码模块解析(包含下载链接)
  9. 欢迎来到大数据时代-----赶快来了解一些大数据的基础知识
  10. 找回win10自带的windows照片查看器
  11. 币须知道 |马云又抢占了一块高地,蚂蚁金服区块链跨境汇款正式落地,2018世界杯板块排名涨幅第一...
  12. error::make_unique is not a member of ‘std’
  13. mysql 42000 1064_mysql主从复制或其他操作报错ERROR 1064 (42000): You have an er
  14. STP特性(Cisco)
  15. Qt 自定义悬浮窗(带动画,类似QQ拼音输入法)
  16. 如何对一年级小学生进行养成教育
  17. 51nod 1001
  18. 大牛证券解析恒指大跌800点+全球股市大跌
  19. Python如何把图片转为Base64字符串
  20. CWnd 对象怎么和 HWND 窗口句柄相互转化

热门文章

  1. .NET基础加强笔记
  2. Java开发导入腾讯地图描点_腾讯地图点聚合开发-实现地图找房功能
  3. 八股文(Spring)
  4. ubuntu使用ntfslabel 修改磁盘分区卷标
  5. 解决ListView显示不全、滑动冲突问题
  6. 用Python搓一个太阳系
  7. BootStrap一页通(样式+组件+插件)(全)
  8. 唯品会关键字搜索商品API接口(item_search-按关键字搜索唯品会商品API接口),唯品会API接口
  9. QT comboBox设置下拉菜单()
  10. 人机交互新时代:多维度快速看清ChatGPT(附下载)