js正则获取表格内容转换数组

 let content =  `
        <table border="1" style="text-align: left">
            <thead>
                <tr>
                    <th>
                       姓名
                    </th>
                    <th>
                        年龄
                    </th>
                    <th>
                        身高
                    </th>
                    <th style="min-width:160px;">体重</th>
                    <th>听力</th>
                     <th style="min-width: 150px;">视力</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>张三</td>
                    <td>20岁</td>
                    <td>150cm</td>
                    <td>
                        150kg
                    </td>
                    <td>正常</td>
                    <td>不正常</td>
                </tr>
                <tr>
                    <td colspan="6" style="text-align:center"><br/></td>
                </tr>
                <tr>
                    <td colspan="6" style="text-align:center;background-color: #e9e9e9;">其他人</td>
                </tr>
                <tr>
                    <td>李四</td>
                    <td>30岁</td>
                    <td>140cm</td>
                    <td>
                        180kg
                    </td>
                    <td>不正常</td>
                    <td>正常</td>
                </tr>
                <tr>
                    <td colspan="6" style="text-align:center;background-color: #f8f8f8;">
                        更新于:2022年7月6日
                    </td>
                </tr>
            </tbody>
        </table>
        <table>
        </table>
    `

    function getSdkStandardList(content){

        let tableBodyValList = [];

        //获取表格html数组
        let tableHtmlList = content.match(
            /<table[^>]*>\s*(<thead[^>]*>|<tbody[^>]*>)?(\s*<tr[^>]*>[\s\S]*?<\/tr>\s*)*(<\/thead>|<\/tbody>)?\s*<\/table>/g
        );

        if(!tableHtmlList){
            return tableBodyValList;
        }

        //获取第一个table表格
        let tableHtml = tableHtmlList[0]

        //过滤掉合并表格的数据
        tableHtml = tableHtml.replaceAll(
            /<tr[^>]*>\s*(\s*<td[^>]*colspan[^>]*>[\s\S]*?<\/td>\s*)*\s*<\/tr>/g,"");

        //提取表格里面的内容html数组
        let trHtmlList = tableHtml.match(
            /<tr[^>]*>\s*(\s*<td[^>]*>[\s\S]*?<\/td>\s*){6}\s*<\/tr>/g
        );

        trHtmlList.forEach((trHtmlItem)=>{
            //提取表格里面的内容数组
            let tdList = trHtmlItem.replaceAll(/<td[^>]*>([\s\S]*?)<\/td>/g,"$1|").replace(/<tr[^>]*>/,"").replace(/<\/tr>/,"").split("|");
            let tdValList = [];

            tdList.some((tdItem,tdIndex)=>{
                //只有6条
                if(tdIndex>=6){
                    return true;
                }
                tdValList.push(tdItem.trim())
            });
            tableBodyValList.push(tdValList)
        });
        return tableBodyValList;
    }
    console.log(getSdkStandardList(content))


版权声明:本文为qq_39634880原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。