前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式:案例分析

正则表达式:案例分析

作者头像
WEBJ2EE
发布2019-12-17 17:49:17
1.2K0
发布2019-12-17 17:49:17
举报
文章被收录于专栏:WebJ2EEWebJ2EE

世界上为什么会有正则表达式这么反人类的玩意儿? ——来自程序员的吐槽

然而事实上,正则表达式并不是每天都会用到,而其密码般的形象,随着时间的推移很容被忘记,所以经常发生的情况是,开发者对于正则表达式的记忆迅速消褪,每次遇到新的问题,都要查资料,重新唤回记忆,对于稍微复杂一点的问题,只好求助于现成的解决方案。反反复复,长期如此,不但应用水平难以明显提升,而且会对这项技术逐渐产生一定的恐惧感和厌烦情绪。 《精通正则表达式》

1. 什么是 [正则表达式]

  • 正则表达式(Regular Expression)是强大、便捷、高效的文本处理工具。
  • 正则表达式是一些用来匹配和处理文本的字符串。

正则为什么不太好学?

正如看到的那样,对正则表达式进行测试是很有技巧的。验证某个模式能不能获得预期的匹配结果并不困难,但如何验证它不会匹配到你不想要的东西可就没那么简单了。 正则表达式必知必会

这里的关键是正则表达式很少有对错之分(当然,前提是它们能解决问题),我们更关心的是它们的复杂程度,而这要由模式匹配操作的精确程度来决定;如果你需要更精确的匹配,就需要构造更复杂的正则表达式。 正则表达式必知必会

想要掌握正则表达式

建议进行系统学习

推荐三本书

2. 正则表达式案例分析

2.1. 移动电话、固定电话

项目实际使用的正则:

改造一波:

  • 移动电话:/^1[3-9]\d{9}$/
  • 固定电话:/^(0\d{2,3}-)?\d{5,8}(-\d{1,4})?$/

2.2. IPv4 地址

  • 0~255:/^(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])$/

完整版:

/^(?:(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])$/

用例:

2.3. 千位分隔符

千位分隔符,其实就是数字中的逗号,每隔三位数加一个逗号,增强可读性。

正则:

代码语言:javascript
复制
function addComma(raw){
  var regex = /(?<=[\d])(?=(\d{3})+(?![\d]))/g;
  return raw.replace(regex, ",");
}

简析:

“,”应该被加到这么一个位置:这个位置右侧的数字个数是3的整数倍(而且再往后不应该再有数字了),这个位置左侧应该还有数字。

用例:

常用正则案例,将持续补充

先写这几个

3. 正则表达式笔试题

3.1. 初级难度

题目01:

题目02:

题目03:

题目04:

题目05:

题目06:

题目07:

题目08:

题目09:

题目10:

3.2. 中级难度

题目01:

题目02:

题目03:

题目04:

题目05:

题目06:

题目07:

题目08:

题目09:

3.3. 细节型题目

题目01:

题目02:

题目03:

陷阱: {} 重复次数匹配,不包含 {,n} 语法,合理语法有:{n}、{n,}、{m,n}

知识:懒惰匹配

参考:

《精通正则表达式(第三版)》 《正则指引(第二版)》 《正则表达式必知必会(修订版)》 egrep: http://regex.info/egrep.html 牛客网【正则表达式】题库: https://www.nowcoder.com/search?type=question&query=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebJ2EE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档