如何编写正则表达式来匹配html中的第一个Div或第二个(如果第一个Div没有匹配)

发布于 2024-11-02 06:00:02 字数 446 浏览 0 评论 0原文

我需要编写一个正则表达式,它将在 html 中查找带有 ID="test1" 的 div 元素,如果没有找到它,那么它应该查找带有 ID= 的 div 元素“test2”

例如

<div id="test1">
some stuff inside test1
</div>

<div id="test2">
some stuff inside test2
</div>

,如果 div id="test1" 存在,那么我需要文本“test1 内的一些内容”。如果没有 id="test1" 的 div,那么它应该使用 id="test2" 查找 div 并获取“test2”中的文本案例“test2 中的一些内容”

I need to write a regular expression which will look a div element with an ID="test1" in html and if it does not find it only then it should look for div element with ID="test2"

e.g.

<div id="test1">
some stuff inside test1
</div>

<div id="test2">
some stuff inside test2
</div>

if div id="test1" is present then i need the text "some stuff inside test1". if there is no div with id="test1" only then it should look div with id="test2" and get me the text inside "test2" which is in this case "some stuff inside test2"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

安静被遗忘 2024-11-09 06:00:02

可以在页面加载后完成吗?比如,用 JavaScript?如果不需要进行预处理,您可以这样做: (jQuery)

$(document).ready(function(){

  // does test1 exist?
  if( $("#test1").length > 0 ){
    $("#test1").html("some stuff goes in here");
  }

  // does test2 exist?
  if( $("#test2").length > 0 ){
    $("#test2").html("some stuff goes in here");
  }

});

如果这不起作用,您可以在输出 HTML 之前尝试使用您使用的任何语言进行字符串搜索。

Can it be done after page load? Like, with Javascript? If it doesn't have to be pre-processed, you can do it like so: (jQuery)

$(document).ready(function(){

  // does test1 exist?
  if( $("#test1").length > 0 ){
    $("#test1").html("some stuff goes in here");
  }

  // does test2 exist?
  if( $("#test2").length > 0 ){
    $("#test2").html("some stuff goes in here");
  }

});

If that doesn't work, you can try doing a string search in whatever language you're using before you output the HTML.

你与清晨阳光 2024-11-09 06:00:02

只是想知道,为什么不执行以下操作呢?

var returnVal;
if(document.getElementById("test1"))
    returnVal = document.getElementById("test1").innerHTML;
else if (document.getElementById("test2"))
    returnVal = document.getElementById("test2").innerHTML;
else
    returnVal = "no value found";

但是,如果您希望通过正则表达式进行类似的操作:

var divs = document.body.innerHTML, returnVal = "", ids = new Array();
ids.push("test1");
ids.push("test2");
    for (var i = 0; i < ids.length; i++) {
         var toBeFound = "<div(.*?)id=(\"|\')" + ids[i] + "(\"|\')(.*?)>";
         var newRegex = new RegExp(toBeFound, "i");
         var match = divs.match(newRegex);
         if (match.length > 0) {
             returnVal += document.getElementById(ids[i]).innerHTML + ",";
         }
    }

此代码会扫描所有文档。对于 ids 数组中提供的每个 id,代码将搜索具有当前数组元素 id 的 div。如果找到,那么它将在 returnVal 字符串中添加相关 div 的innerHTML,并且每个值将用逗号分隔。不过,我强烈推荐第一个代码。

Just wondering, why dont you do the following?

var returnVal;
if(document.getElementById("test1"))
    returnVal = document.getElementById("test1").innerHTML;
else if (document.getElementById("test2"))
    returnVal = document.getElementById("test2").innerHTML;
else
    returnVal = "no value found";

But still, if you wish to that by regex something similar is possible:

var divs = document.body.innerHTML, returnVal = "", ids = new Array();
ids.push("test1");
ids.push("test2");
    for (var i = 0; i < ids.length; i++) {
         var toBeFound = "<div(.*?)id=(\"|\')" + ids[i] + "(\"|\')(.*?)>";
         var newRegex = new RegExp(toBeFound, "i");
         var match = divs.match(newRegex);
         if (match.length > 0) {
             returnVal += document.getElementById(ids[i]).innerHTML + ",";
         }
    }

This code scans all the document. For each id provided in the ids array, the code will search for divs with an id of the current array element. If it will find then it will add the innerHTML of the relevant div in the returnVal string, and each value will be seperated by commas. However, I strongly recommend the first code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文