众所周知,String.prototype.replace()方法用于替换字符串,它里面有两个参数
第一个参数:支持一个字符串或是一个正则表达式
1.如果是字符串,表示要替换的目标,
2.如果是正则表达式,表示替换要符合规则的目标
第二个参数:支持一个字符串或是一个函数
1.如果是字符串,表示要将目标替换成这个字符串
2.如果是一个函数,则需要在函数中返回要替换的内容
这时,可能有小伙伴要问了,replace中第二个参数为什么是一个函数呢?
因为我们在匹配中忽略了大小写
如果在项目中,接受后端传输的数据,直接使用target进行替换 会造成 大小写和后端不一致
所以需要使用方法中的match参数进行替换
比如这里我们要做一个字符串高亮的方法
常规写法:
返回情况:
第二个参数写成函数:
返回情况:
我们不难发现,当使用函数作为第二个参数时,源数据里的字母大小写也不会被改变
当然,该方法函数接收多个形参,我们只是使用了第一个,希望本文,对您有所帮助
其他参数如下:
| 变量名 | 代表的值 |
|---|---|
match | 匹配的子串。(对应于上述的$&。) |
p1,p2, ... | 假如 replace() 方法的第一个参数是一个RegExp 对象,则代表第 n 个括号匹配的字符串。(对应于上述的2 等。)例如,如果是用 /(\a+)(\b+)/ 这个来匹配,p1 就是匹配的 \a+,p2 就是匹配的 \b+。 |
offset | 匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 'abcd',匹配到的子字符串是 'bc',那么这个参数将会是 1) |
string | 被匹配的原字符串。 |
| NamedCaptureGroup | 命名捕获组匹配的对象 |