文档章节

《精通正则表达式》学习笔记

dhb_oschina
 dhb_oschina
发布于 2013/07/27 13:17
字数 488
阅读 48
收藏 0

以Ruby语言格式为参考。

正则表达式在线测试网站:

https://www.debuggex.com/?re=%28[0-9]{3}%29-%28[0-9]{3}%29-%28[0-9]{4}%29&str=123-456-7899

http://www.osctools.net/regex#

http://www.regexr.com/

1.匹配7月4号(July fourth)的文本。

    匹配举例   :月份可能是July、Jul和jul,日期可能是fourth、4th或者是4

    正则表达式:/^july? (fourth|4(th)?)$/i

    状态转换图

    imageimage

2.匹配24小时制时间格式0:0:0,或00:00:00

    匹配举例   :除了正常的00:00:00到23:59:59外,时分秒允许单个,如0:0:0或9:9:9

    正则表达式:/^([01]?\d{1}|2[0-3])(:[0-5]?\d{1}){2}$/

    状态转换图

image

3.匹配12小时制时间格式1:12 am,或12:9 pm

    匹配举例 :除了正常的01:59 am外,时分允许单个,如1:1 am。此外,时间和am/pm之间的空格可多个。

    正则表达式:/^(0?[1-9]|1[0-2]):[0-5]?\d +[ap]m$/

   状态转换图

    image

4. 找到相邻重复英文单词

    匹配举例 :如同时出现 “the the”或“the       the”

    正则表达式:/^([a-zA-Z]+) +\1$/i

   状态转换图

    image

    不能匹配项:有些引擎的-i参数有个bug,即不会对反向引用的内容忽略大小写。即,它可能找到“the the”,但是不能找到“the The”。

5.匹配一个标识符(indentifier)

    匹配举例 :标识符只包含字母、数字和下划线,但是不能以数字开头。同时可能有长度限制,如最长只有32字符

    正则表达式:/^[a-zA-Z_]\w{0,31}$/

    状态转换图

    image

6.匹配浮点数

    匹配举例 :匹配如下格式,最前面的+-号不是必须的;若是以小数点开头,则小数点后必须有数字;浮点数必须要有至少一位数字。如-29、-96.7、-.12、-8.9、 .39  、+.1776、+.3等

    正则表达式:/^[-+]?(\d+(\.\d*)?|\.\d+)$/

    状态转换图

    image

© 著作权归作者所有

共有 人打赏支持
dhb_oschina
粉丝 9
博文 220
码字总数 190497
作品 0
程序员
开始系统学习“正则表达式”

我喜欢简单。 所以我一向不太接受正则表达式这么隐涩的技术,因为难以理解,无法很直观的判断一个表达式到底做何用途。 但最近这个想法彻底的改变了,在 OSChina 项目中尝试着使用一些正则表...

红薯
2010/07/01
702
22
分享51本关于JavaScript方面的学习书籍(免费下载)

分享51本关于JavaScript方面的学习书籍(免费下载) 1、JavaScript面向对象15分钟教程 2、原型、作用域、闭包的完整解释 3、Javascript面向对象特性实现(封装、继承、接口) 4、JavaScript面向...

邓剑彬
2012/12/02
1K
12
精通正则表达式的 12 个有用资源

任何开发项目,不管使用的何种编程语言,经常都需要从给定的数据中提取一些值然后进行验证。例如输入的校验、过滤 URL 变量之类。而正则表达式用来处理这样的任务可以说是轻而易举,而且代码...

oschina
2013/07/31
12.8K
56
nginx location的匹配规则

nginx location的匹配规则 Run - 学习练习复习2017-02-2639 阅读 匹配nginxlocation规则 location匹配命令 ~ 执行正则表达式,区分大小写 ~* 执行正则表达式,不区分大小写 ^~ 表示普通字符...

Run - 学习练习复习
2017/02/26
0
0
web前端攻城狮整理的收藏夹

作为一名web前端开发工程师你的收藏夹存对了吗?下面是一份互联网上流传甚广的web前端开发收藏夹资源,包含学习网站、JS库、常用工具、常用插件、资讯书籍等资源。速速转存吧~ 一、学习网站 ...

inw3cschool
2017/03/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

好用的vue组件

http://elickzhao.github.io/2017/08/vue%E4%B8%80%E4%BA%9B%E7%89%B9%E5%88%AB%E6%9C%89%E7%94%A8%E7%9A%84%E6%8F%92%E4%BB%B6/...

Littlebox
28分钟前
2
0
linux 源码安装mysql8

1.安装依赖 yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel   2.下载源码包 wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-......

苏牧影子
28分钟前
1
0
BeanFactory和FactoryBean

BeanFactory BeanFactory是ioc容器的顶层接口,里面定义了一些容器基本的功能 类似ConfigurableBeanFatory和ApplicationContext就是比较高级的容器,除了基本的方法之外,还实现了很多高级的...

sendo
29分钟前
1
0
Java并发(9)- 从同步容器到并发容器

引言 容器是Java基础类库中使用频率最高的一部分,Java集合包中提供了大量的容器类来帮组我们简化开发,我前面的文章中对Java集合包中的关键容器进行过一个系列的分析,但这些集合类都是非线...

Ala6
34分钟前
3
0
Java定时器Timer学习之一

种类: 接通延时型定时器:接通延时型定时器是各种PLC(可编程控制器)中最常见最基本的定时器,这种定时器在Siemens的PLC中,成为SD型定时器 断开延时型定时器:这种定时器是当输入条件00000为ON时...

王怀楼
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部