一、正则表达式规则:

    
表达式
可匹配
备注
\r,\n 回车符,换行符
\t
制表符
\\
代表‘\’本身
\^
匹配‘^’本身
\$
匹配‘$’本身
\.
匹配小数点(.)本身
('ad$12.3').match(/\$\d+.\d/)。结果为$12.3
\d
任意一个数字,0~9 中的任意一个
('ad$12.3').match(/\$\d+/)。结果为$12
\w 任意一个字母或数字或下划线,也就是a-z,A-Z,0-9,‘_’中的任意一个
('sdf_sdf').match(/\w_\w/)。结果为f_s
\s 包括制表符、空格、换页符的其中任意一个
('sdf_sdf \n').match(/\w_\w+\s\s/)。结果为["f_sdf 
                                         "]
. 小数点可以匹配除了换行符‘\n’以外的任意一个字符
('sdf_sd ff').match(/\w_\w+\s./)。结果为["f_sd f"]
[]
使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符
('fhsgfh').match(/[asd]/)。结果为["s"]
[^]
用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符
[^A-F0-3]:匹配 "A"~"F","0"~"3" 之外的任意一个字符
{n}
匹配表达式重复n次
('aaaadsfsd').match(/a{4}d/):结果为aaaad
{m,n}
匹配至少重复m次,至多重复n次
('aaaaaaaadsfsd').match(/a{1,4}d/)。结果为["aaaad"]
{m,}
匹配至少重复m次
('aaaaaaaadsfsd').match(/a{1,}d/)。结果为["aaaaaaaad"]
?
匹配表达式0次或者1次,相当于{0,1}
('aaaaaaaadsfsd').match(/a?d/)。结果为["ad"]
+ 匹配至少重复1次,相当于{1,}
('aaaaaaaadsfsd').match(/a+d/)。结果为["aaaaaaaad"];('dsfsd').match(/a+d/)。结果为null
*
匹配表达式不出现或出现任意次,相当于{0,}
('aaaaaaaadsfsd').match(/a*d/)。结果为["aaaaaaaad"];('dsfsd').match(/a*d/)。结果为["d"]
^
与字符串开始的地方匹配,不匹配任何字符
('GGGaaaaa').match(/^aaa/)。结果为null;('aaaaaddd').match(/^aaa/)。结果为["aaa"]
$
与字符串结束的地方开始匹配,不匹配任何字符
('GGGaaaaaaFFF').match(/aaa$/)。结果为null;('GGGaaaaaa').match(/aaa$/)。结果为["aaa"]
\b
匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符
("weekend,endfor,end").match(/\bend\b/)。结果为["end"]
|
左右两边表达式之间 "或" 关系,匹配左边或者右边
("I'm Tom, he is Jack").match(/Jack|Tom/)。结果为["Tom"]
()

分组:用括号 ( ) 将其他表达式包含,可以使被包含的表达式组成一个整体,在被修饰匹配次数时,可作为整体被修饰。

另外,用括号包含的表达式,所匹配到的内容将单独作记录,匹配过程中或结束后可以被获取。

('dsfjsjaaaajjjjdddd').match(/a(jjjj)d/)。结果为["ajjjjd", "jjjj"]返回true
贪婪模式
定义:尽可能多的匹配符合它规则的字符,同理,带 "*" 和 "{m,n}" 的表达式都是尽可能地多匹配,d***d***d
1、(d)(/w+):"\w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd";
2、(d)(/w+)(d):"\w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "\w+" 也能够匹配上最后一个 "d",但是为了使整个表达式匹配成功,"\w+" 可以 "让出" 它本来能够匹配的最后一个 "d"
1、('aaadkjfhn').match(/(d)(\w+)/)。结果为["dkjfhn", "d","kjfhn"]返回true;
2、('aaadkjfhndfgf').match(/(d)(\w+)(d)/)。结果为["dkjfhnd", "d", "kjfhn", "d"]返回true;
3、('aaadkjfhndfgfd').match(/(d)(\w+)/)结果为["dkjfhndfgfd", "d", "kjfhndfgfd"]返回true;
4、('aaadkjfhn').match(/(d)(\w+)(d)/)结果为null返回false;
非贪婪模式(勉强模式)
定义:在限定符之后添加问号(?)。勉强模式的限定符,总是尽可能少的匹配。如果之后的表达式匹配失败,勉强模式也可以尽可能少的再匹配一些,以使整个表达式匹配成功,d***d***d

1、(d)(\w+?):"\w+?" 将尽可能少的匹配第一个 "d" 之后的字符,结果是:"\w+?" 只匹配了一个 "x";
2、(d)(\w+?)(d):为了让整个表达式匹配成功,"\w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,从而使整个表达式匹配成功。因此,结果是:"\w+?" 匹配 "xxx"

1、('aaadkjfhndfgfdf').match(/(d)(\w+?)(d)/)。结果为["dkjfhnd", "d", "kjfhn", "d"]返回true;
2、('aaadkjfhn').match(/(d)(\w+?)/)。结果为('aaadkjfhn').match(/(d)(\w+?)/)返回true;
3、('aaad').match(/(d)(\w+?)/)。结果为null返回false;
占有模式
在限定符之后添加加号(+)。占有模式的限定符,总是尽可能多的匹配。与“贪婪模式”不同的是,即使之后的表达式匹配失败,“占有模式”也不会“让出”自己能够匹配的字符。
1、(/a(\w{1,4}+)d/).test('dsfjsjaaaajjjjdddd')。结果为["aaaajjjjdddd", "dd"]返回true;
2、('dsfjsjaaaajjjjdddd').match(/a(\w{1,4})d/)。结果为["ajjjjd", "jjjj"]返回true;
3、(/a(\w{1,3}+)d/).test('dsfjsjaaaajjjjdddd')。结果为["aaaajjjjdddd", "d"]返回true;
4、('dsfjsjaaaajjjjdddd').match(/a(\w{1,3})d/)。结果为null返回false。

转义字符

1、标点符号在正则表达式中,被定义了特殊的意义,需要在前面加 "\" 进行转义后,匹配该字符本身。
2、使用 \Q 开始,\E 结束,可使中间的标点符号失去特殊意义,将中间的字符作为普通字符。

使用 \U 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的小写字母转换成大写。在大小写敏感模式下,只能与大写文本匹配。

使用 \L 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的大写字母转换成小写。在大小写敏感模式下,只能与小写文本匹配。

注:\Q...\E 适合用于:表达式中需要比较长的普通文本,而其中包含了特殊符号。

1、('dfgd(a+b)*3fdgfd').match(/\(a\+b\)\*3/)。结果为["(a+b)*3"]返回true;
2、

\Q(a+b)*3\E

可匹配文本 "(a+b)*3"。

(?#xxx)
注释:注释可以位于表达式中任意地方,但不可以出现在转义字符(\)与被转移字符中间。比如:\(?# xxx )w是不可以的,这样写的效果实际上是第一个括号被转义成普通字符了。

在 (?# 之后,遇到第一个反括号将表示注释结束。因此,想把注释写成 (?# x()xx ) 或者 (?# x\)xx )  都是不可以的。注释中的反斜杠(\),不代表转义字符。

正则表达式随记(2)相关推荐

  1. 最烦人的正则表达式记忆口诀

    正则是每个程序员绕不开的堡垒,只有把它攻下来.我觉得正则之所以难,第一难是需要记忆,第二难是要求具备抽象逻辑思维.  签于网上太多的介绍都是一篇凶悍的短文,边看边理解可以,帮助记忆不行.又受五笔字型字 ...

  2. 正则表达式 任意数字_作为运维还不会正则表达式?赶快看这篇学习一下

    概述 正则表达式是很多运维薄弱的一项技能.大家很多时候都会觉得正则表达式难记.难学.难用,但不可否认的是正则表达式是一项很重要的技能,所有今天将学习和使用正则表达式时的关键点整理如下,仅供参考. 什么 ...

  3. 手机号正则表达式验证_还不会正则表达式?看这篇!

    前言 正则表达式是很多程序员,甚至是一些有了多年经验的开发者薄弱的一项技能.大家都很多时候都会觉得正则表达式难记.难学.难用,但不可否认的是正则表达式是一项很重要的技能,所有我将学习和使用正则表达式时 ...

  4. 正则表达式口诀 正则表达式学习工具

    1: 签于网上太多的介绍都是一篇凶悍的短文,边看边理解可以,帮助记忆不行.又受五笔字型字根表口诀"白手看头三二斤..."的启发, 2: 试作"正则表达式助记口诀" ...

  5. 正则表达式实例搜集,通过实例来学习正则表达式

    正则表达式实例搜集,通过实例来学习正则表达式.本仓库实例搜集整理来自于<一些正则表达式随记>,通过一个单独仓库专门整理这些正则实例,提供一个实例网站,方便正则实例验证和查询.也方便添加新的 ...

  6. 正则表达式口诀及常用正则 。正则贪婪与非贪婪模式

    正则表达式口诀及常用正则 签于网上太多的介绍都是一篇凶悍的短文,边看边理解可以,帮助记忆不行.又受五笔字型字根表口诀"白手看头三二斤..."的启发,  试作"正则表达式助 ...

  7. 量化金融分析师学习笔记——中篇完结

    numpy #numpy import numpy as np print('numpy创建的维度:等于[]个数') f1=np.array([1,2,3]) print(f1.shape)#(3,) ...

  8. Python基础教程(crossin全60课)

    [ Python 第 第 1 1  课 ] 安装 ........................................................................... ...

  9. java正则匹配英文句号_「正则表达式」王国奇遇记

    第一回 初来乍到 NPC: "欢迎来到正则表达式的国度,勇士!这里的每一个人都使用正则表达式,我是这里的 NPC,每一个来到这里的人都将由我代为介绍正则世界的规则,至于能领悟到何种境界,就看 ...

最新文章

  1. VTK:灯光之LightActor
  2. mysql 索引合并_MySQL 索引合并(Index Merge)优化
  3. docker之阿里云centos 7.x 启动容器报错处理办法
  4. python自动化开发-[第十四天]-javascript(续)
  5. map怎么转化dto_阿里面试:为什么Map桶中个数超过8才转为红黑树
  6. JBoss JBPM 实践系列(一)--- 安装配置(Tomcat 6.0 + MySQL 5.1)
  7. java计算机毕业设计计算机组成原理教学网站MyBatis+系统+LW文档+源码+调试部署
  8. java j2ee j2se_j2ee与j2se对比
  9. Moon Modeler v1.6.5功能和特点
  10. COSOSWAP的这份NFT防盗指南,请给周杰伦转发
  11. My_blog个人博客系统
  12. 有限公司清算组成员怎样构成
  13. iMX6UL lvgl开发备忘
  14. 学籍管理系统:详细设计说明书- -
  15. Java绝对好文,转载的!(转载)
  16. Java高级软件工程师面试考纲总结
  17. android x86酷狗音乐,酷狗音乐怀旧版
  18. matlab音乐键盘模拟,科学网—[原][Matlab][04] Midi音乐键盘 - 王楠的博文
  19. ROS项目开发流程、框架
  20. Apache虚拟主机示例

热门文章

  1. 职场邮件 | 格式:姓名全拼(姓名全拼+城市缩写)
  2. 超脱是人成熟的标志之一
  3. java io 装饰者_Java IO 体系(一): 装饰者模式
  4. SpringCloud Nacos入门教程
  5. 结构数组小白鼠带帽子
  6. CSS float详解
  7. 通信笑笑点(2010.08.20)
  8. Ansible Playbook-熟练运用ansible(二)
  9. 视频转换器 Wondershare Video Converter Ultimate v11.5.1 中文便携版
  10. 小程序如何使用solidup和soliddown?