JavaScript正则匹配 多行内容

需求: 通过正则匹配给定代码块中的链接和标题

刚开始是通过以下正则匹配的, 尝试之后匹配失败
let reg = /.(.*?)<\/span><\/a>/igs

JavaScript正则匹配 多行内容_第1张图片

观察后发现是由于代码之间的换行引起的, 虽然修正模式加上了s, 但是还是需要在每次换行的位置加上.*?进行匹配, 使用一下正则就可以匹配成功
let reg = /.*?(.*?)<\/span>.*?<\/a>/igs

// 需要匹配的字符串
let str = `

`

/**
 * 正则分析
 * 第一个(.*?) 匹配 电影链接
 * 第一个.*? 匹配代码换行之间可能产生的空格
 * 第二个(.*?) 匹配 电影标题
 * 第二个.*? 匹配代码换行之间可能产生的空格
 * igs i:不区分大小写 g:全局匹配 s:将字符串视为单行

 */
let reg = /<a href="(.*?)" class="">.*?<span class="title">(.*?)<\/span>.*?<\/a>/igs

let res
// 保存信息的数组
let movieArr = []

// 循环匹配
while (res = reg.exec(str)) {
     
  let obj = {
     
    name: res[2],
    url: res[1]
  }
  movieArr.push(obj)
}

console.log(movieArr)

JavaScript正则匹配 多行内容_第2张图片

你可能感兴趣的:(正则表达式)