replace
有这样一个问题,使用正则的方式把字符串 19970206 转换为 1997/02/06 的格式,字符串+正则,首先想到的是replace,但是之前用过的replace都是直接把第一个参数的内容用第二个替换掉,看了一下w3school文档上关于第二个参数的说明,有点抽象,没看懂,但是应该就是这个了🤨
- $1、$2、…、$99的含义
与 regexp 中的第 1 到第 99 个子表达式相匹配的文本
var a = '19970206';
var b = a.replace(/(\d{4})(\d{2})(\d{2})/, "$1/$2/$3")
console.log(b) // 1997/02/06
$1, $2, $3 对应的就是正则表达式里每一个括号匹配到的值,使用/的方式拼接每个值
- $&的含义
与 regexp 相匹配的子串
var a = '19970206';
var b = a.replace(/(\d{4})/, '$&>')
console.log(b) // 1997>0206
$&就相当于正则匹配到的4个数字,就是1997,使用 1997> 拼接的格式替换1997
- $` 的含义
位于匹配子串左侧的文本
var a = 'abc19970206';
var b = a.replace(/(\d{4})/, '$`')
console.log(b) // abcabc0206
$` 匹配到的是四个数字1997左侧的数字,整个意思是用1997左侧的字符替换1997,结果就是 abcabc0206
- $’ 的含义
位于匹配子串右侧的文本
var a = 'abc19970206';
var b = a.replace(/(\d{4})/, "$'")
console.log(b) // abc02060206
与上面的情况类似,用1997右边的字符来替换1997
- $$ 的含义
直接量符号 就是$字符本身
var a = 'abc19970206';
var b = a.replace(/(\d{4})/, "$$")
console.log(b) // abc$0206