gpt4 book ai didi

Javascript:带有变量的正则表达式,用于匹配包含 HTML 代码的字符串的一部分

转载 作者:行者123 更新时间:2023-11-28 20:40:29 25 4
gpt4 key购买 nike

我正在尝试将正则表达式(包含 1 个变量)与存储为字符串的 HTML 代码页面进行匹配。

HTML 字符串是一个数组,每个元素都包含如下所示的内容。 (我已经在某个标签上进行了拆分)。数组的每个元素都包含房屋的一些数据(名称、平方米数等)。当然是虚构的。重点是,我只需通过匹配第一个 TD 标签之间的文本来匹配这些房屋中的 1 个,而我需要的部分是表单最后一个 INPUT 标签中的 VALUE(数字)。

<TR BGCOLOR=#D4C0A1>
<TD WIDTH=40%><NOBR>Luminous&#160;Arc&#160;2</NOBR></TD>
<TD WIDTH=10%><NOBR>154&#160;sqm</NOBR></TD>
<TD WIDTH=10%><NOBR>6460&#160;gold</NOBR></TD>
<TD WIDTH=40%><NOBR>rented</NOBR></TD>
<TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<FORM ACTION= METHOD=post><TR><TD>
<INPUT TYPE=hidden NAME=world VALUE=Olympa>
<INPUT TYPE=hidden NAME=town VALUE="Yalahar">
<INPUT TYPE=hidden NAME=state VALUE=>
<INPUT TYPE=hidden NAME=type VALUE=houses>
<INPUT TYPE=hidden NAME=order VALUE=>
<INPUT TYPE=hidden NAME=houseid VALUE=37010>
<INPUT TYPE=image NAME="View" ALT="View" SRC="" BORDER=0 WIDTH=120 HEIGHT=18>
</TD></TR></FORM></TABLE></TD></TR>

我构建了以下正则表达式:

var regex = new RegExp(house + "[\\s\\S]+name=houseid value=([0-9]+)>", "i");

其中 house 是房屋的名称(在本例中为 Luminous Arc 2),我需要的部分是 houseid 37010

我认为这个正则表达式应该工作得很好,并给我所需的命中,但是 houses[i].match(regex) 每次都返回 null。我在字符串中找不到匹配项。

到目前为止,我已经尝试了几种方法,包括尝试将字符串转换为 DOM 对象以在 TR 标签上拆分(转换失败)。我觉得我已经很接近了,但我被困住了。

有人知道为什么我的正则表达式可能无法工作吗?

肯尼思

最佳答案

您可以将字符串添加到您的 html 中(在 display:none div 或类似的东西中),然后像在任何地方一样访问 DOM。

例如:

<div id="stringContainer"></div>
var searchstring = "Luminous&#160;Arc&#160;2";
searchstring = searchstring.replace(/&#160;/g, '&nbsp;') // Convert &#160; to &nbsp;

var c = document.getElementById("stringContainer");
c.innerHTML = '<table>'+houses+'</table>';
var h = c.getElementsByTagName('tr');

for(var i = 0, l = h.length; i < l; i++){ // Loop through the found elements
var name = h[i].firstChild.nextSibling.getElementsByTagName('nobr')[0]; // Get the house's name.
if(name && name.innerHTML == searchstring){ // If the name matches the search string. (innerHTML returns &nbsp; instead of &#160;. hence the replace earlier.)
console.log(h[i].getElementsByTagName('input')[5].value) // log the value.
}
}

<强> Working example

假设变量houses是:

var houses = '<TR BGCOLOR=#D4C0A1>\n\
<TD WIDTH=40%><NOBR>Luminous&#160;Arc&#160;2</NOBR></TD>\n\
<TD WIDTH=10%><NOBR>154&#160;sqm</NOBR></TD>\n\
<TD WIDTH=10%><NOBR>6460&#160;gold</NOBR></TD>\n\
<TD WIDTH=40%><NOBR>rented</NOBR></TD>\n\
<TD>\n\
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>\n\
<FORM ACTION= METHOD=post>\n\
<TR>\n\
<TD>\n\
<INPUT TYPE=hidden NAME=world VALUE=Olympa>\n\
<INPUT TYPE=hidden NAME=town VALUE="Yalahar">\n\
<INPUT TYPE=hidden NAME=state VALUE=>\n\
<INPUT TYPE=hidden NAME=type VALUE=houses>\n\
<INPUT TYPE=hidden NAME=order VALUE=>\n\
<INPUT TYPE=hidden NAME=houseid VALUE=37010>\n\
<INPUT TYPE=image NAME="View" ALT="View" SRC="" BORDER=0 WIDTH=120 HEIGHT=18>\n\
</TD>\n\
</TR>\n\
</FORM>\n\
</TABLE>\n\
</TD>\n\
</TR>\n\
<TR BGCOLOR=#D4C0A1>\n\
<TD WIDTH=40%><NOBR>Dark&#160;Arc&#160;2</NOBR></TD>\n\
<TD WIDTH=10%><NOBR>154&#160;sqm</NOBR></TD>\n\
<TD WIDTH=10%><NOBR>6460&#160;gold</NOBR></TD>\n\
<TD WIDTH=40%><NOBR>rented</NOBR></TD>\n\
<TD>\n\
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>\n\
<FORM ACTION= METHOD=post>\n\
<TR>\n\
<TD>\n\
<INPUT TYPE=hidden NAME=world VALUE=Olympa>\n\
<INPUT TYPE=hidden NAME=town VALUE="Yalahar">\n\
<INPUT TYPE=hidden NAME=state VALUE=>\n\
<INPUT TYPE=hidden NAME=type VALUE=houses>\n\
<INPUT TYPE=hidden NAME=order VALUE=>\n\
<INPUT TYPE=hidden NAME=houseid VALUE=37010>\n\
<INPUT TYPE=image NAME="View" ALT="View" SRC="" BORDER=0 WIDTH=120 HEIGHT=18>\n\
</TD>\n\
</TR>\n\
</FORM>\n\
</TABLE>\n\
</TD>\n\
</TR>';

关于Javascript:带有变量的正则表达式,用于匹配包含 HTML 代码的字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14479003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com