Как написать регулярное выражение, чтобы соответствовать первый Div в HTML или второй, если нет совпадения в первом - PullRequest
0 голосов
/ 18 апреля 2011

Мне нужно написать регулярное выражение, которое будет искать элемент div с ID="test1" в html, и если он не найдет его только тогда, он должен искать элемент div с ID="test2"

например

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

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

если присутствует div id="test1", тогда мне нужен текст "некоторые вещи внутри test1".если нет div с id="test1" только тогда, он должен выглядеть как div с id="test2" и получить мне текст внутри «test2», который в данном случае «кое-что внутри внутри test2»

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

Просто интересно, почему ты не делаешь следующее?

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 + ",";
         }
    }

Этот код сканирует весь документ. Для каждого идентификатора, предоставленного в массиве идентификаторов, код будет искать div с идентификатором текущего элемента массива. Если он найдет, он добавит innerHTML соответствующего div в строку returnVal, и каждое значение будет разделено запятыми. Тем не менее, я настоятельно рекомендую первый код.

0 голосов
/ 18 апреля 2011

Можно ли это сделать после загрузки страницы?Мол, с Javascript?Если это не нужно предварительно обрабатывать, вы можете сделать это так:использовать перед выводом HTML.

...