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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值