Javascript 正则扩展之dotAll模式
Posted UsherYue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript 正则扩展之dotAll模式相关的知识,希望对你有一定的参考价值。
正则表达式中点 (.) 是一个特殊字符,它可以匹配除 换行符(\\n)、回车符(\\r)、行分隔符、段分隔符、四个字节的UTF-16字符外的任意字符。 为了使点(.)可以匹配任意字符,ES9 引入新的修饰符s(dotAll模式),就是让(.) 可以匹配一切字符。
代码一,ES9——dotAll模式之前采用\\s 类匹配回车、换行等字符
let html = `
<ul>
<li>
<a>C++编程思想</a>
<span>张三</span>
</li>
<li>
<a>Java Web开发</a>
<span>李四</span>
</li>
</ul>`;
// 声明正则
const reg = /<li>\\s+<a>(.*?)<\\/a>\\s+<span>(.*?)<\\/span>/g;
// 执行匹配
const result = reg[Symbol.match](html);
console.log(result);
输出结果
代码二,ES9——dotAll模式 (.)
下面这段代码采用了命名捕获分组+doAll模式
let html = `
<ul>
<li>
<a>C++编程思想</a>
<span>张三</span>
</li>
<li>
<a>Java Web开发</a>
<span>李四</span>
</li>
</ul>`;
//采用了命名捕获分组+doAll模式
const reg = /<li>.*?<a>(?<bookname>.*?)<\\/a>.*?<span>(?<author>.*?)<\\/span>/gs;
var result=null,bookList=[];
while ( result = reg.exec(html))
let book= bookname: result.groups.bookname, author: result.groups.author ;
bookList.push(book);
console.log(bookList);
输出结果
以上是关于Javascript 正则扩展之dotAll模式的主要内容,如果未能解决你的问题,请参考以下文章