这里写目录标题
正则(语法篇/有些大类里面的元素会有重叠)

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

被折叠的 条评论
为什么被折叠?



