正则

(一)字符类

[...]  方括号内的任意字符

[^...]   不在方括号内的任意字符

.       除换行符和其它Unicode行终止符之外的任意字符

\w    任何ASCII字符组成的单词,等价于[a-zA-Z0-9]

\W   任何非ASCII字符组成的单词,等价于[^a-zA-Z0-9]

\s     任何Unicode空白符

\S     任何非Unicode空白符

\d     任何数字,等价于[0-9]

\D     任何非数字,等价于[^0-9]

 

(二)重复字符语法

{n,m}  匹配前一项至少n次,但不能超过m次

{n,}     匹配前一项n次或更多次

{n}      匹配前一项n次

?     匹配前一项0次或1次,等价{0,1}

+    匹配前一项1次或多次,等价于{1,}

*     匹配前一项0次或多次,等价于{0,}

默认贪婪匹配:/a{1,3}/    匹配'aaa'

非贪婪匹配,只需要在重复字符后面加上?  /a{1,3}?/    匹配'a'

 

(三)选择,分组,引用

|       选择,匹配该符号左边的子表达式或右边的子表达式:  /\d{3}|[a-z]{4}/  匹配三位数字或者四个小写字母

()   分组

1. 可以把单独的项组合成子表达式,以便可以像处理一个单独的单元那样用 | * + ?等对单元内的项进行处理: /java(script)?/

2. 分组之后可以引用 \n表示引用第n个分组表达式匹配内容: /(['"])[^'"]*\1/

 

(四)指定匹配位置

^  匹配字符串开头

$  匹配字符串结尾

\b   匹配单词边界

 

(五)修饰符

i  不区分大小写

g  全局匹配,即找到所有匹配,而不是找到第一个之后就停止

 

(六)String正则匹配方法

search: 参数是正则,返回一个与之匹配的字串的起始位置,匹配不到返回-1

'javascript'.search(/script/i)   返回4  

replace: 第一个参数是正则,第二个是要替换的字符串、$开头的特殊字符串、函数

'javascript'.replace(/script/gi,'Script')  返回javaScript

第二个参数可以是$n,代表第n个组合所匹配的字符串

'javascript'.replace(/(sc)ript/gi,"$1") 返回javasc

第二个参数可以是函数

'a=1&b=2'.replace(/(\w+)=(\w+)&?/g,function($1,$2,$3){console.log($1,$2,$3)
}) 
a=1& a 1
b=2 b 2

 

match:参数是正则,返回一个由匹配结果组成的数组

带g:'1 ldf 3 dsfdf 4f'.match(/\d+/g)  返回['1','3','4']

不带g:

'1 ldf 3 dsfdf 4f'.match(/\d+/)  返回["1", index: 0, input: "1 ldf 3 dsfdf 4f"]

'abcd'.match(/(ab)c/)  返回["abc", "ab", index: 0, input: "abcd"]   还会把组合匹配到的字符放到数组中

 

(七)正则方法

test:参数为字符串,判断是否匹配成功

/java/.test('javascript')  返回true

exec:如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。我们可以看得出,在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。

/java/.exec('javascript')  返回["java", index: 0, input: "javascript"]

但是,当 RegExpObject 是一个全局正则表达式时,exec() 的行为就稍微复杂一些。它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这就是说,您可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。

var p = /java/g
var str = 'javajavajaddd'
p.exec(str)
["java", index: 0, input: "javajavajaddd"]
p.exec(str)
["java", index: 4, input: "javajavajaddd"]

 

转载于:https://www.cnblogs.com/webLilingyun/p/7220041.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Cloud Studio写python

1、进入【腾讯云开发者平台】 2、点击【进入工作空间】 3、点击【新建工作空间】 4、点击【从模版创建】 选择你需要的空间环境,就可以开始啦!转载于:https://juejin.im/post/5c75f79051882562962ef5d7

显卡、显卡驱动、显存、GPU、CUDA、cuDNN

显卡Video card,Graphics card,又叫显示接口卡,是一个硬件概念(相似的还有网卡),执行计算机到显示设备的数模信号转换任务,安装在计算机的主板上,将计算机的…

ros rviz显示rosbag中的图像和imu数据

一、rosbag相关的指令 1. rostopic list //列举出系统中正在发布的ros 话题 2. rosbag record -a //录制系统中所有正在发布的ros 话题 3. rosbag record topic1 topic2 .... -o bagname.bag 4. rosbag play bagname.bag //播放bag文件 5. rosbag info bagname.bag //查看…

PX4的workqueue

Workqueue相当于是中断子程序,然后在queue的cycle里面要注意,不能在cycle函数里面用printf打印,在cycle里面printf函数是打印不出来的。 也不能在cycle里面用while(1),就是不能让程序一直在queue里面执行,要想让cycle执…

企业选择 多云管理平台 六大注意事项

企业选择 多云管理平台 六大注意事项 1、是否足够简单,学习曲线有多长 2、是否可实现自动化环境部署,日常运维作业等一系列操作? 3、是否可以管理全异构的云环境,支持主流公有云厂商的云资源? 4、是否能提供管理成本、…

面向接口编程

面向接口编程 一般在实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理解的系统设计规范应该是所有的定义与实现分离,尽管这对于系统中某些复杂的情况有些繁烦。面向接口编程设计 使用面向接口编程思想将层与层之间通过接口依赖,下…

Java并发学习之一——线程的创建

与每个java语言中的元素一样,线程是对象。在Java中,我们有两种方式创建线程: 1、通过直接继承thread类,然后覆盖run方法。 2、构建一个实现Runnable接口的类,然后创建一个thread类对象并传递Runnable对象作为构造参数 …

day1||python

测试题: 0. Python 是什么类型的语言? Python是一种面向对象、解释型、动态类型计算机程序设计语言解释型:程序无需编译成二进制代码,而是在执行时对语句一条一条编译动态类型:在程序执行过程中,可以改变变…

2.7万字还原行业面貌,《2019 AI金融风控行业研究报告》正式上线!...

在金融科技领域,风险控制的重要性,从其关联的金融业务和结合的技术维度可见一斑:风控涉及信用借贷、保险、支付、供应链金融等场景,并运用了包括生物特征识别、机器学习、自然语言处理、大数据、云计算等多项技术。 区别于美国有…

【原创】QT简单计算器

代码 //main.cpp#include "calculator_111.h" #include <QtWidgets/QApplication>int main(int argc, char *argv[]) { QApplication a(argc, argv); Calculator_111 w; w.show(); return a.exec(); /* //QT creator Calculator_111 win; win.show(); return…

cs堡垒机使用说明

一、堡垒机介绍 为了保证机房的网络安全&#xff0c;IDC内所有服务器不被允许从办公网直接ssh登录&#xff0c;必须通过跳板机进行间接登录。用户通过跳板机执行的所有命令&#xff08;包括通过跳板机登录的其他机器后的命令&#xff09;都会被保存并审计。 cs是我们登录IDC服…

export和export default的区别

es6中export和export default的区别 export与export default均可用于导出常量、函数、文件、模块&#xff1b;你可以在其它文件或模块中通过import(常量 | 函数 | 文件 | 模块)名的方式&#xff0c;将其导入&#xff0c;以便能够对其进行使用&#xff1b;在一个文件或模块中&am…

koa中间件机制详解

转自&#xff1a;https://cnodejs.org/topic/58fd8ec7523b9d0956dad945 koa是由express原班人马打造的一个更小、更富有表现力、更健壮的web框架。 在我眼中&#xff0c;koa的确是比express轻量的多&#xff0c;koa给我的感觉更像是一个中间件框架&#xff0c;koa只是一个基础的…

极度推荐的文章和网站

推荐文章---收录中 因为是及时雨,这里就给他放在开头啦&#xff1a;http://www.cnblogs.com/zhuzhenwei918/p/7241971.html webpack3.0配置指南&#xff1a;http://www.cnblogs.com/caideyipi/articles/7080010.html 超酷的伪元素网站&#xff1a;https://tympanus.net/Develop…

倍道而行:选择排序

一、为什么学了之后过段时间又会忘记了&#xff1f; 因为没有去运用它和认为面试需要而没有真正的重视。现在给它赋予意义&#xff1a;1.那就是基础牢固&#xff0c;才可触类旁通2.真正记得和随时可以拿出手&#xff0c;那么面试可以PK掉一大批人。不然看到一个精妙的算法就学一…

如何构建一个真实的推荐系统?

AI 前线导读&#xff1a;随着互联网行业的井喷式发展&#xff0c;数据规模呈现爆炸式增长。大数据中蕴含了巨大的价值&#xff0c;但同时也来了很 “信息过载” 的问题。推荐系统作为一个广泛应用的信息过滤系统&#xff0c;在很多领域取得了巨大的成功。在电子商务上&#xff…

volatile的适用场景

介绍 把代码块声明为 synchronized&#xff0c;有两个重要后果&#xff0c;通常是指该代码具有 原子性&#xff08;atomicity&#xff09;和 可见性&#xff08;visibility&#xff09;。 原子性意味着个时刻&#xff0c;只有一个线程能够执行一段代码&#xff0c;这段代码通过…

link和@import的区别

1、link属于HTML标签&#xff0c;import是css提供的 2、link是HTML标签&#xff0c;没有兼容问题&#xff0c;而import只在IE5以上才能识别 3、页面被加载时&#xff0c;link会同时被加载&#xff0c;而import引用的css会等到页面加载完再加载 4、link方式的样式的权重高于impo…

6.java 代码块

代码块 在java中用{}括起来的称为代码块&#xff0c;代码块可分为以下四种: 普通代码块构造代码块静态代码块同步代码块普通代码块 在方法或语句中出现的{}就称为普通代码块。普通代码块和一般语句的执行顺序由他们在代码中出现的次序决定&#xff0c;先出现先执行。 普通代码块…

C#如何测试代码运行时间

第一种方式&#xff1a;System.Diagnostics.Stopwatch stopwatch new Stopwatch(); stopwatch.Start(); // 开始监视代码运行时间 // 需要测试的代码 .... stopwatch.Stop(); // 停止监视 TimeSpan timespan stopwatch.Elapsed; // 获取当前实例测量得出的总时间 double …