replace() 方法返回模式被替换处修改后的字符串。
replace([RegExp|String],[String|Function])
var str = “Visit Microsoft!”;
var res = str.replace(/microsoft/i, “W3School”); //Visit W3School!
其第一个参数可以是正则表达式,如果想全局替换需添加全局参数
‘abc’.replace(/[abc]/, ‘y’) // ybc
‘abc’.replace(/[abc]/g, ‘y’) // yyy 全局替换
在第二个参数中,也可以引用前面匹配的结果
‘abc’.replace(/a/, ‘$&b’) // abbc KaTeX parse error: Expected 'EOF', got '&' at position 1: &̲ 引用前面的匹配字符 ,'&b’-‘ab’
‘abc’.replace(/(a)b/, ‘$1a’) // aac &n 引用前面匹配字符的分组,‘$1a’-‘aa’
‘abc’.replace(/b/, ‘$’‘) // aac ‘ 引用匹配字符前面的字符 , ′ ` 引用匹配字符前面的字符, ' ‘引用匹配字符前面的字符,′`’-‘a’
‘abc’.replace(/b/, “$'”) // acc ′ 引用匹配字符后面的字符 , " ' 引用匹配字符后面的字符," ′引用匹配字符后面的字符,"’ "-“c”
如果第2个参数是回调函数,每匹配到一个结果就回调一次,每次回调都会传递以下参数
result: 本次匹配到的结果
$1,…$9: 正则表达式中有几个(),就会传递几个参数,$1~$9分别代表本次匹配中每个()提取的结果,最多9个
offset:记录本次匹配的开始位置
source:接受匹配的原始字符串
‘abc’.replace(/\w/g, function (match, $1, $2) {
return match + ‘-’
})
// a-b-c-
match()方法也会返回匹配的结果,匹配结果和exec类似
‘abc’.match(/abc/) // [‘abc’, index: 0, input: abc]
‘abc’.match(/abd/) // null
如果有全局参数(g),match会返回所有的结果,并且没有index和input属性
‘abcabcabc’.match(/abc/g) // [‘abc’, ‘abc’, ‘abc’]
split()方法使用正则,可以用指定符号分隔字符串,并返回数据
‘a,b.c’.split(/,|./) // [a, b, c]
3.修饰符:像 /microsoft/i,斜杠外面的i
g正则遇到第一个匹配的字符就会结束,加上全局修复符,可以让其匹配到结束
i正则默认是区分大小写的,i可以忽略大小写
m正则默认情况下,^和匹配行首和行尾,不理解就看例子
/jing$/ // 能够匹配 'yanhaijing,不能匹配 ‘yanhaijing\n’
/jing$/m // 能够匹配 'yanhaijing, 能够匹配 ‘yanhaijing\n’
/^jing/ // 能够匹配 ‘jing’,不能匹配 ‘\njing’
/^jing/m // 能够匹配 ‘jing’,能够匹配 ‘\njing’
4.括号表达式
()、[]、{} 的区别
() 的作用是提取匹配的字符串。表达式中有几个()就会得到几个相应的匹配字符串。比如 (\s+) 表示连续空格的字符串。
[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示字符文本要匹配英文字符和数字。
{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配1~3个空格。
5.元字符(Metacharacter)是拥有特殊含义的字符
. 匹配除了换行符(\n)以外的任意一个字符 = [^\n]
\w = [0-9a-zA-Z_]
\W = [^0-9a-zA-Z_]
\s = [ \t\n\v]
\S = [^ \t\n\v]
\d = [0-9]
\D = [^0-9]
^在[]外表示匹配开头的意思
^abc // 可以匹配abc,但是不能匹配aabc
$表示匹配结尾的意思
abc$ // 可以匹配abc,但是不能匹配abcc
上面提到的\b表示单词的边界
abc\b // 可以匹配 abc ,但是不能匹配 abcc
\b:如abcd@ , d与@之间就可以用\b匹配 ,回车符和单词字符之间当然也可以用\b匹配,其宽度为0
6.Quantifiers 定义量词
(1)正则默认和人心一样是贪婪的,也就是常说的贪婪模式,凡是表示范围的量词,都优先匹配上限而不是下限
a{1, 3} // 匹配字符串’aaa’的话,会匹配aaa而不是a
有时候这不是我们想要的结果,可以在量词后面加上?,就可以开启非贪婪模式
a{1, 3}? // 匹配字符串’aaa’的话,会匹配a而不是aaa
(2)如果你想匹配xxx前不能是yyy,或者xxx后不能是yyy,那就要用到预搜索。js只支持正向预搜索,也就是xxx后面必须是yyy,或者xxx后面不能是yyy
1(?=2) // 可以匹配12,不能匹配22
1(?!2) // 可以匹配22,不能匹配12
7.在 JavaScript 中,RegExp 对象是带有预定义属性和方法的正则表达式对象。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
img-GuaY37eR-1715540383157)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!