正则表达式(语法篇)

正则表达式完全指南:语法详解
这篇博客全面介绍了正则表达式的语法,包括创建正则的方式、RegExp对象和String对象的方法、元字符的使用、修饰符的意义、零宽断言的概念以及量词的应用。此外,还详细讲解了方括号表达式的用法,帮助读者深入理解正则表达式。

正则(语法篇/有些大类里面的元素会有重叠)

在这里插入图片描述

一、创建

1.字面量

正则中不能设置变量
let reg = /\d+/

2.构造函数

正则中可以设置变量
let reg = new RegExp("\\d+")

二、RegExp对象方法

1.exec

检索字符串中指定的值。返回找到的值,并确定其位置。

var str = '23sdf345kfdm090kdfmg'

var reg = /\d+/g
var res = reg.exec(str) // 全局匹配到的第一个符合条件的
console.log('第一次', res)
// 返回值: ["23", index: 0, input: "23sdf345kfdm090kdfmg", groups: undefined]
res = reg.exec(str) // 全局匹配到的第二个符合条件的
console.log('第二次', res)
// 返回值: ["345", index: 5, input: "23sdf345kfdm090kdfmg", groups: undefined]

2.test

检索字符串中指定的值。返回 true 或 false。

var str = `<div>asd..asdadfg</div>`

// \ 转义:将特殊含义转换成字面量含义
var reg = /<div>.*<\/div>/g
var res = reg.test(str)
console.log(res) 
// 返回值: true

3.toString

返回正则表达式的字符串。

var patt = new RegExp("\d+", "g");

var res = patt.toString();
console.log(res) 
// 返回值: /d+/g

三、String对象方法

1.search

匹配第一个符合结果的索引值位置;如果找不到返回-1。

var str = "sdfds232skdfk1232"

var reg = /\d+/
var res = str.search(reg)
console.log(res)
// 返回值 5

2.match

找到一个或多个正则表达式的匹配;并返回数组;没有是返回null。

var str = 'adw4jvd456cj56ij55'

var reg = /\d+/g
var arr = str.match(reg)
console.log(arr)
// 返回值 ["4", "456", "56", "55"]

3.replace

替换与正则表达式匹配的子串;返回替换后的字符串;没有符合正则的则返回原字符串。

var str = '58jfdn98jf94kk34'

var reg = /\d+/g
var res = str.replace(reg, "*")
console.log(res)
// 返回值 ‘*jfdn*jf*kk*’

4.split

把字符串分割为字符串数组。

var str = 'sad3jasksaamas'

var arr = str.split("a")
console.log(arr)
// 返回值  ["s", "d3j", "sks", "", "m", "s"]

四、元字符(拥有特殊含义的字符)

.

查找单个字符,除了\n(换行)\r(回车)\u2028(段落结束符) \u2029(行结束符) 。相当于[^\r\n]

*

n*:0次或多次

+

n+:1次或多次

?

n?:0次或1次

$

n$:以n结尾

^

^n:以n开头

|

\

转义

()

分组

[]

字符集合

{}

指定次数 n{X} n{X,} n{X,Y}

\w

查找数字、字母及下划线。相当于 [a-zA-Z_0-9]

\W

查找非单词字符。相当于 [^a-zA-Z]吗?

\d

查找数字。相当于 [0-9]

\D

查找非数字。相当于 [^0-9]

\s

查找空白字符

\S

查找非空白字符

\b

匹配单词边界(非 \w 都可被称为边界)

\B

匹配非单词边界

\0

查找 NULL 字符

\f

查找换页符

\r

查找回车符

五、修饰符(匹配模式)

i

忽略大小写

g

全局匹配

m

多行模式

s

singleline模式

u

unicode模式:匹配unicode字符集

y

粘性模式:匹配到的索引连续

六、零宽断言

正向(后面) 负向(前面) 肯定断言 否定断言

正向肯定断言(替换前面的,断言后面的)

var str = "iphone3iphone4iphone11iphoneNumber"

var reg = /iphone(?=\d{1,2})/g
var res = str.replace(reg, "苹果")
console.log(res)
// 返回值:'苹果3苹果4苹果11iphoneNumber'

正向否定断言(替换前面的,断言后面的)

var str = "iphone3iphone4iphone11iphoneNumber"

var reg = /iphone(?!\d{1,2})/g
var res = str.replace(reg, "苹果")
console.log(res)
// 返回值  'iphone3iphone4iphone11苹果Number'

负向肯定断言(替换后面的,断言前面的)

var str = "10px20px30pxipx"

var reg = /(?<=\d{2})px/g
var res = str.replace(reg, "像素")
console.log(res)
// 返回值  '10像素20像素30像素ipx'

负向否定断言(替换后面的,断言前面的)

var str = "10px20px30pxipx"

var reg = /(?<!\d{2})px/g
var res = str.replace(reg, "像素")
console.log(res)
// 返回值  '10px20px30pxi像素'

七、方括号

[abc]

查找方括号之间的任何字符。

[^abc]

查找任何不在方括号之间的字符。

[0-9]

查找任何从 0 至 9 的数字。

[a-z]

查找任何从小写 a 到小写 z 的字符。

[A-Z]

查找任何从大写 A 到大写 Z 的字符。

[A-z]

查找任何从大写 A 到小写 z 的字符。

[adgk]

查找给定集合内的任何字符。

[^adgk]

查找给定集合外的任何字符。

(red|blue|green)

查找任何指定的选项。

八、量词

n+
n*
n?
n{X}
n{X,}
n{X,Y}
n$
^n
?=n (匹配任何其后紧接指定字符串 n 的字符串。)
?!n(匹配任何其后没有紧接指定字符串 n 的字符串。)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值