用正则表达式处理 html 的实践

2018年05月10日

1// 清除标签中style属性
2function clearStyle(html) {
3  return html.replace(/(<[a-zA-Z]+?\s.*?)(style=".*?")(.*?>)/g, (match, first, _, third) => {
4    return `${first}${third}`;
5  });
6}
 1// 清除标签中除了src/href外所有的属性
 2function clearAttr(html) {
 3  return html.replace(/<([a-zA-Z]+?)\s(.*?)>/g, (match, tag, other) => {
 4    let attr = '';
 5    other.replace(/(src|href)=".+?"/, (match) => {
 6      attr = ' ' + match;
 7    });
 8    return `<${tag}${attr}>`;
 9  });
10}
1// </p>或</div>标签后添加换行符
2function addLine(html) {
3  return html.replace(/(<\/p>|<\/div>)/g, (match) => {
4    return `${match}\n`;
5  });
6}