我需要编写一个正则表达式,它在html中看起来是一个带有ID="test1"
的div元素,如果它只找不到它那么它应该找到带有ID="test2"
的div元素
e.g。
<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中的一些东西”
答案 0 :(得分:0)
可以在页面加载后完成吗?喜欢,用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之前尝试使用您正在使用的任何语言进行字符串搜索。
答案 1 :(得分:0)
只是想知道,为什么不做以下事情?
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,并且每个值将用逗号分隔。但是,我强烈推荐第一个代码。