如何获取Html 字符串中的td标签中的内容

正则相关问题-如何获取Html 字符串中的td标签中的内容

//这是我的字符串
        let myStr = `<table style="width: 257px; height: 189px;" border="1">
                        <tbody>
                            <tr>
                            <td style="width: 45.4403px;">statustd>
                            <td style="width: 68.7216px;">create_attd>
                            <td style="width: 76.0511px;">update_attd>
                            <td style="width: 54.6023px;">gendertd>
                            tr>
                            <tr>
                            <td style="width: 45.4403px;">typetd>
                            <td style="width: 68.7216px;"> td>
                            <td style="width: 76.0511px;"> td>
                            <td style="width: 54.6023px;"> td>
                            tr>
                        tbody>
                    table>`

我期望看到的效果是

let myHopeResults = ['status','create_at','update_at','gender','type'] //空格不装进来
可以用一个正则一次性拿到所有的内容吗?就是不需要循环

let myStr = `<table style="width: 257px; height: 189px;" border="1">
                    <tbody>
                        <tr>
                        <td style="width: 45.4403px;">status</td>
                        <td style="width: 68.7216px;">create_at</td>
                        <td style="width: 76.0511px;">update_at</td>
                        <td style="width: 54.6023px;">gender</td>
                        </tr>
                        <tr>
                        <td style="width: 45.4403px;">type</td>
                        <td style="width: 68.7216px;"> </td>
                        <td style="width: 76.0511px;"> </td>
                        <td style="width: 54.6023px;"> </td>
                        </tr>
                    </tbody>
                </table>`;
let regex = /(?<=<td[^>]*>)(\S*)(?=<\/td>)/g;
let myHopeResults = myStr.match(regex);
console.log(myHopeResults);

你可以使用正则表达式和replace方法来提取td标签中的内容,例如:


let myStr = `<table style="width: 257px; height: 189px;" border="1">
                <tbody>
                    <tr>
                    <td style="width: 45.4403px;">status</td>
                    <td style="width: 68.7216px;">create_at</td>
                    <td style="width: 76.0511px;">update_at</td>
                    <td style="width: 54.6023px;">gender</td>
                    </tr>
                    <tr>
                    <td style="width: 45.4403px;">type</td>
                    <td style="width: 68.7216px;"> </td>
                    <td style="width: 76.0511px;"> </td>
                    <td style="width: 54.6023px;"> </td>
                    </tr>
                </tbody>
            </table>`;

let pattern = /<td[^>]*>(.*?)<\/td>/g;
let results = [];
let match = pattern.exec(myStr);
while (match != null) {
  let content = match[1].trim();
  if (content !== '') {
    results.push(content);
  }
  match = pattern.exec(myStr);
}
console.log(results);
// 输出: ["status", "create_at", "update_at", "gender", "type"]

这里使用了正则表达式/<td[^>]>(.?)</td>/g来匹配td标签和其中的内容,并使用while循环和exec方法来多次匹配并提取其中的内容。提取的结果放入results数组中,并使用trim方法去掉空格,最后输出results数组即可。
回答不易,望采纳!

你这是和正则杠上了啊

// 字符间无空格的
myStr.match(/([^\s>]+)(?=<\/td)/gi)
// 需匹配的字符间有空格的
myStr.match(/([^\s>]+(\s+[^>]+)*)(?=<\/td)/gi)