正则表达式随记(2)
一、正则表达式规则:
表达式 可匹配 备注\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***d1、(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: 试作"正则表达式助记口诀" ...
- 正则表达式实例搜集,通过实例来学习正则表达式
正则表达式实例搜集,通过实例来学习正则表达式.本仓库实例搜集整理来自于<一些正则表达式随记>,通过一个单独仓库专门整理这些正则实例,提供一个实例网站,方便正则实例验证和查询.也方便添加新的 ...
- 正则表达式口诀及常用正则 。正则贪婪与非贪婪模式
正则表达式口诀及常用正则 签于网上太多的介绍都是一篇凶悍的短文,边看边理解可以,帮助记忆不行.又受五笔字型字根表口诀"白手看头三二斤..."的启发, 试作"正则表达式助 ...
- 量化金融分析师学习笔记——中篇完结
numpy #numpy import numpy as np print('numpy创建的维度:等于[]个数') f1=np.array([1,2,3]) print(f1.shape)#(3,) ...
- Python基础教程(crossin全60课)
[ Python 第 第 1 1 课 ] 安装 ........................................................................... ...
- java正则匹配英文句号_「正则表达式」王国奇遇记
第一回 初来乍到 NPC: "欢迎来到正则表达式的国度,勇士!这里的每一个人都使用正则表达式,我是这里的 NPC,每一个来到这里的人都将由我代为介绍正则世界的规则,至于能领悟到何种境界,就看 ...
最新文章
- VTK:灯光之LightActor
- mysql 索引合并_MySQL 索引合并(Index Merge)优化
- docker之阿里云centos 7.x 启动容器报错处理办法
- python自动化开发-[第十四天]-javascript(续)
- map怎么转化dto_阿里面试:为什么Map桶中个数超过8才转为红黑树
- JBoss JBPM 实践系列(一)--- 安装配置(Tomcat 6.0 + MySQL 5.1)
- java计算机毕业设计计算机组成原理教学网站MyBatis+系统+LW文档+源码+调试部署
- java j2ee j2se_j2ee与j2se对比
- Moon Modeler v1.6.5功能和特点
- COSOSWAP的这份NFT防盗指南,请给周杰伦转发
- My_blog个人博客系统
- 有限公司清算组成员怎样构成
- iMX6UL lvgl开发备忘
- 学籍管理系统:详细设计说明书- -
- Java绝对好文,转载的!(转载)
- Java高级软件工程师面试考纲总结
- android x86酷狗音乐,酷狗音乐怀旧版
- matlab音乐键盘模拟,科学网—[原][Matlab][04] Midi音乐键盘 - 王楠的博文
- ROS项目开发流程、框架
- Apache虚拟主机示例
热门文章
- 职场邮件 | 格式:姓名全拼(姓名全拼+城市缩写)
- 超脱是人成熟的标志之一
- java io 装饰者_Java IO 体系(一): 装饰者模式
- SpringCloud Nacos入门教程
- 结构数组小白鼠带帽子
- CSS float详解
- 通信笑笑点(2010.08.20)
- Ansible Playbook-熟练运用ansible(二)
- 视频转换器 Wondershare Video Converter Ultimate v11.5.1 中文便携版
- 小程序如何使用solidup和soliddown?