JavaScript正则表达式

1、什么叫正则表达式?

使用单个字符串来匹配一系列符合某个语法规则的字符串

2、正则表达式工具?

https://regexper.com 

3、js中正则表达式的语法?

js通过内置对象RegExp支持正则表达式

1⃣️字面量: var reg = /\bis\b/g

2⃣️构造函数: var reg = new RegExp(/\bis\b/, ‘g’)

 

4、修饰符?

标志

全称

含义

g

global

全文搜索,不添加的话搜索到第一个匹配停止

i

ignore case

忽略大小写,默认大小写敏感

m

multiple lines

多行搜索

 

5、元字符?

类型

标志

等同于(或示例)

含义

字符类

[]

[abc]

a或b或c

反向类

^

[^abc]

非a、b、c

范围类

-

[0-9]

0-9之间的数字

 

预定义类

.

[^\r\n]

除回车换行之外的所有字符

\d

[0-9]

数字字符

\D

[^0-9]

非数字字符

\s

[\t\n\x0B\f\r]

空白符

\S

[^\t\n\x0B\f\r]

非空白符

预定义类

\w

[a-zA-Z_0-9]

单词字符

\W

[^a-zA-Z_0-9]

非单词字符

边界

 

^

 

以……开始

$

 

以……结束

\b

 

单词边界

\B

 

非单词边界

量词

 

出现0次或1次(最多一次)

+

 

出现1次或多次(至少一次)

*

 

出现0次或多次(任意次)

{n}

 

出现n次

{n,m}

 

出现n到m次

{n,}

 

至少出现n次

 

6、贪婪模式——尽可能多的匹配 

7、非贪婪模式——尽可能少的匹配 (在量词后加上?)

8、 分组

使用()可以达到分组的功能

1⃣️ 分组在量词中的引用

/Byron{3}/   ———>  将n重复三次 

/(Byron){3}/g   ———> 将Byron重复三次 

2⃣️ 分组在或中的引用

/Byron|Casper/ ———> Byron或Casper 

/Byr(on|Ca)sper/ ———> Byronsper 或 ByrCasper 

3⃣️ 反向引用,利用$捕获分组的内容

2019-12-21变成 12/21/2019 

a. 非命名捕获

b.命名捕获

若不想捕获分组的话,在分组内加上?: 

9、前瞻

正则表达式从文本头部向文本尾部解析,文本尾部方向,成为前

在正则表达式匹配到规则时,向前检查是否符合断言,符合某个特定断言叫正向匹配不符合某个特定断言叫负向匹配。

正向前瞻    exp(?= assert) 

负向前瞻    exp(?!assert) 

10、RegExp对象属性

global: 是否全文搜索,默认false 

ignorCase: 是否大小写敏感,默认false 

multiline: 多行搜索,默认false 

lastIndex: 当前表达式匹配内容的最后一个字符的下一个位置 

source: 正则表达式的文本字符串(不带标志位的那种) 

11、RegExp对象方法

1⃣️ RegExp.prototype.test(str)  用于测试字符串参数中是否存在匹正则表达式模式的字符串,存在返回true,不存在返回false

全局调用下,每次都从上一次匹配结果的最后一个字符的下一个字符匹配,匹配到最后再重置。

非全局调用下, lastIndex不生效

2⃣️ RegExp.prototype.exec(str) 使用正则表达式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果;若无匹配文本返回null,否则返回一个结果数组,数组的第一个参数为与正则表达式相匹配的文本、第二个参数为与第一个子表达式相匹配的文本、第三个参数为与第二个子表达式相匹配的文本,以此类推……

数组有两个属性:

index:声明匹配文本的第一个字符的位置

input:存放被检索的字符串的string 

groups:一个新的field,用来存储命名捕获组的信息

12、字符串对象方法

1⃣️ string.prototype.search(reg)  用于检索字符串中的子字符串,或检索与正则表达式相匹配的子字符串,该方法返回第一个匹配结果的index,找不到则返回-1。search()方法不支持全局匹配,所以会自动忽略标志g,并且总是从字符串的开始进行检索。 

2⃣️ string.prototype.match(reg) 检索字符串,找到一个或多个匹配的文本。   

非全局调用:只执行一次匹配,若没有找到匹配的文本返回null,否则返回一个数组,其中存放了与匹配文本有关的信息。该返回数组与exec方法返回数组相同。 

全局调用:多次匹配,找到所有。若没找到任何匹配的子串,返回null;若找到了一个或多个匹配的子串,则返回一个数组。数组元素中存放的是字符串中所有匹配子串,而且没有index和input属性。 

3⃣️string.prototype.split(reg) 将字符串分割成数组,在复杂情况下,我们使用正则表达式解决 

4⃣️ 1、string.prototype.replace(str, replaceStr)

2、string.prototype.replece(reg, replaceStr) 

3、string.prototype.replece(reg, function)

function在每次匹配后替换时调用,有4个参数:

1⃣️ 匹配字符串

2⃣️ 正则表达式分组内容,没有分组则没有该参数

3⃣️ 匹配项在字符串中的index

4⃣️ 原字符串  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值