正则表达式.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"