正则表达式没有给出预期的结果

时间:2017-07-25 17:02:45

标签: php regex

所以,我得到了一些我需要提取值的html表,做了一个正则表达式来获取我想要的值。

html表可以采用以下两种格式:

<td height="20" style="width:59px;height:20px;">1</td>
            <td style="width:212px;">Mendes, Paulo [AA]</td>
            <td style="width:99px;">39</td>
            <td>8</td>
            <td style="width:85px;">$10,000</td>
        </tr><tr height="20"><td height="20" style="width:59px;height:20px;">2</td>
            <td style="width:212px;">Campos, Miguel [AC]</td>
            <td style="width:99px;">37</td>
            <td>6</td>
            <td style="width:85px;">$5,000</td>

另一个

<td>1</td>
            <td>Mendes, Paulo [AA]</td>
            <td>39</td>
            <td>8</td>
            <td>$10,000</td>
        </tr><tr height="20"><td>2</td>
            <td>Campos, Miguel [AC]</td>
            <td>37</td>
            <td>6</td>
            <td>$5,000</td>

对于没有样式的示例,我可以使用此正则表达式获取我想要的值:

<td>(\d+)<\/td>\n+\t*<td>([\w+, ]+) \[(\w{2})\]<\/td>

它将在php中使用,我一直在使用https://regex101.com/来测试正则表达式。

现在要获取具有样式的表的值,我没有运气。

尝试了#34;完美匹配&#34;用:

 <td height\=\"20\" style\=\"width\:59px\;height\:20px\;\">(\d+)<\/td>\n+\t*<td style\=\"width\:212px\;\">([\w+, ]+) \[(\w{2})\]<\/td>

但它并没有抓住我想要的东西。甚至试图做一个否定搜索,但它仍然没有工作。我做错了什么?

1 个答案:

答案 0 :(得分:0)

为什么不使用QuerySelectorAll(&#39;&#39;);它更容易。您可以使用它来检索td元素的内部文本,并使用循环将它们存储在数组中。一旦你有了td,就可以使用jQuery Ajax将它发送到.php文件来处理你想要的。

例如:

var tdArr = [];

var tdContent = document.querySelectorAll('table tr td');

for ( let i = 0; i  < tdContent.length; i++){
    tdArr.push(tdContent[i].textContent);
}