正则表达式教程: https://blog.csdn.net/h610443955/article/details/81079439
一.创建和操作
reg = new RegExp(abc);
reg = /abc/; 简洁写法, 效果等同
//字符串方法
"abc".match(reg) /g形式下不捕获括号值,没有index和input属性
"abc".search(reg)
"abc".replace(reg, "x")
"abc".split(reg)
//正则方法
reg.test("abc")
reg.exec("abc") /g形式下需要同个正则对象每执行一次exec返回一次匹配结果
//正则属性
reg.lastIndex exec的下一个匹配的开始位置
reg.global 是否全局匹配
reg.ignoreCase 是否忽略大小写
reg.multiline 是否多行匹配
reg.source 查看正则表达式
二.字符匹配语法
1.基本
/abc/ 包含abc
/[^a]bc/ 取反, 包含 不是a + bc
/(good|nice)/ 分支, 包含good或者nice
/abc/g 全局匹配, 默认匹配第一个
/abc/i 忽略大小写
/abc/m 影响^和$,使其变成行头行尾
2.量词
/ab{2,5}c/ 包含 a + (2~5个b) + c
{m,} 至少m个
{m} m个
? = {0,1} 至多1个
+ = {1,} 至少1个
* = {0,} 任意个
{m,n}?, ??, +?, *? 加?,惰性匹配,当最少数量匹配时即按最少的
3.字符组
/a[123]b/ 包含 a + (123任一值) + c
/[1-9a-zA-Z]/ 包含 (1~9或a~z或A~Z任一值)
/[-az][az-][a\-z]/ 包含(-az任一值),不写成a-z
简写
\d = [0-9] 数字
\D = [^0-9] 非数字
\w = [0-9a-zA-Z_] 单词(数字字母下划线)
\W = [^0-9a-zA-Z_] 非单词
\s = [\t\v\n\r\f] 空白符(空格,水平制表,垂直制表,换行,回车,换页)
\S = [^\t\v\n\r\f] 非空白符
. = 通配符,除换行符回车符行分隔符和段分隔符外
[\d\D] = 所有字符
4.匹配特殊字符,前面加\
正斜杠 \/ 反斜杠 \\
点号 \. 星号 \*
三.位置匹配语法
1.锚点
^ 匹配开头
$ 匹配结尾
\b 单词边界
\B 非单词边界
(?=p) p代表子模式,即p的前面位置
(?!p) 非p的前面位置
2.示例
"你好".replace(/^|$/g, "#")
→ "#你好#"
----------------------------------------------
"123456789".replace(/(?!^)(?=(\d{3})+$)/g, ",")
→ "123,456,789"
-----------------------------------------------
四.括号
1.基本
./(ab)+/ 带上括号,exec和match默认捕获括号值(match+/g除外)
/(?:ab)+/ 非捕获
/you are (good|nice)} 分支
2.提取
/(\d{4})-(\d{2})-(\d{2})/.exec("2017-06-12")
→ ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12"]
匹配结果 第一括号 第二 第三 匹配序号 输入文本
-----------------------------------------------
"2017-06-12".replace(regex, "$2/$3/$1")
→ "06/12/2017"
-----------------------------------------------
RegExp.$1 静态属性可以提取前一个匹配的括号值
3.反向引用
/(d{2})\1/
(1)使用\1匹配必须与第一个括号的值相同
(2)括号嵌套,以左括号为准开始算
(3)前面没括号则匹配反向引用字符本身
JS对象—2.工具函数(RegExp)
最新推荐文章于 2023-08-07 09:46:19 发布