js正则表达式test match replace区别

test:

返回的是布尔值,使用方法是 

正则表达式.test(字符串)

/\[video=.+\]/.test('dfdf[video=http://dfd.com@http://dfdf.com]gfh[video=http://aaa.com@http://bbb.com]gyhj')

match:

返回的是数组,用来存放匹配的结果,使用发法是

字符串.match(正则表达式)

'dfdf[video=http://dfd.com@http://dfdf.com]gfh[video=http://aaa.com@http://bbb.com]gyhj'.match(/\[video=.+\]/)

replace:

返回替换后的字符串,且原字符串不变,使用发法是

var newStr = str.replace(正则表达式 | 子字符串, newSubStr | function)

1. 参数1为字符串

var newStr1 ='#home#home'.replace('home', 'home1') //得到newStr1的结果为"#home1#home"

字符串只会匹配一次

2. 参数1为正则表达式

var newStr2 ='#home#home'.replace(/home/, 'home1') //得到newStr2的结果为"#home1#home"

一般正则表达式也只匹配一次,但加了g就会全部匹配

var newStr3='#home#home'.replace(/home/g, 'home1') //得到newStr3的结果为"#home1#home1"

3. 参数2为字符串

$1, $2, $3...分别表示参数1为正则表达式中的()相应的匹配字串

var newStr5= "John Smith".replace(/(\w+)\s(\w+)/, '$2 $1') //得到newStr5的结果为"Smith John"

4. 参数2为函数

用函数方式替换,可以对匹配的字段做处理再return,用字符串方式只能字符串拼接,无法特殊处理。

function(match, p1, p2, p3...) 函数里第一个参数match表示匹配的子串,p1、p2、p3类似上面$1、$2、$3

var a='dfdf[video=http://dfd.com@http://dfdf.com]gfh[video=http://aaa.com@http://bbb.com]gyhj'.replace(/(\[video=)([^\]]+)(\])/g, (match, p1, p2)=>{
                            console.log(match)
                            let linkArr = p2.split('@')
                            return `<video src="${linkArr[0]}" post="${linkArr[1]}">Your browser does not support HTML5 video.</video>`
                        })

//"dfdf<video src="http://dfd.com" post="http://dfdf.com">Your browser does not support HTML5 video.</video>gfh<video src="http://aaa.com" post="http://bbb.com">Your browser does not support HTML5 video.</video>gyhj"

 

posted @ 2022-10-09 19:52  方小川  阅读(158)  评论(0编辑  收藏  举报