JavaScript RegEx для тегов Div

Пока что невозможно связываться с Telegram таким образом для телефонных номеров, поскольку каждый пользователь ДОЛЖЕН добавить номер телефона в свой список контактов, прежде чем он сможет отправить ему сообщение по номеру телефона. Это ограничение связано с политикой конфиденциальности Telegram и предотвращением злоупотреблений. Более подробно, если Telegram разрешает такой тип связи, злоумышленник может получить веб-страницу, например https://t.me/+1XXXXXXX, для каждого возможного номера без прохождения аутентификации. Вероятно, именно поэтому Telegram не имеет такой функции связывания.

Однако вы можете связаться с @username пользователя Telegram, если он / она имеет:

https://t.me/username

5
задан PhiLho 13 November 2008 в 21:09
поделиться

8 ответов

Это должно сделать это:

pattern = /<div id="LiveArea">(.*?)<\/div>/;
matches = your_html_var.match(pattern);
the_string = matches[0];

document.write(the_string);
3
ответ дан 18 December 2019 в 10:50
поделиться

Это не будет возможно только с регулярным выражением, если HTML в том отделении не будет содержать никакие другие отделения. Поскольку то, что произойдет с шаблоном как Jeremy, - то, что он будет соответствовать первому заключительному тегу Div, который не обязательно был бы закрывающим тэгом для элемента div#LiveArea.

Если Вы управляете источником HTML, Вы могли бы вставить комментарий, что Вы могли использовать для соответствия на для корректного "заключительного" местоположения.

Существуют другие опции только для JavaScript, но они - каждый очень топорный или hacky

  1. Установите innerHTML скрытого элемента, равного этой строке содержания, ЗАТЕМ вытяните innerHTML, Вам нужно решение mmattax's использования. Но необходимо будет, вероятно, выполнить 2-й шаг здесь с тайм-аутом для предоставления времени браузера, чтобы оценить этот новый HTML и выставить его DOM.
  2. На самом деле проанализируйте содержание, отслеживание вводных/заключительных отделений, поскольку Вы сталкиваетесь с ними так, Вы будете затем знать, когда Вы будете в корректном </div> тег.
3
ответ дан 18 December 2019 в 10:50
поделиться
var temp = document.createElement('DIV');
temp.innerHTML = YourVariable;
var liveArea;
for (var i = 0; i < temp.childNodes.length; i++)
{
   if (temp.childNodes[i].id == 'LiveArea')
   {
       liveArea = temp.childNodes[i];
       break;
   }
}
2
ответ дан 18 December 2019 в 10:50
поделиться

Я не уверен, что следую за Вами, когда Вы говорите, "Переменная JavaScript, которая содержит страницу HTML", но Если необходимо извлечь HTML между таким отделением, можно использовать innerHTML свойство элемента.


var e = document.getElementById('LiveArea');
if(e) alert(e.innerHTML);


1
ответ дан 18 December 2019 в 10:50
поделиться

Я нашел это перемещение статьи в сети, которые берут идентификатор DIV, и показывает его на новой странице для печати его;

function getPrint(print_area)
{
//Creating new page
var pp = window.open();
//Adding HTML opening tag with <HEAD> … </HEAD> portion 
pp.document.writeln('<HTML><HEAD><title>Print Preview</title>')
pp.document.writeln('<LINK href=Styles.css type="text/css" rel="stylesheet">')
pp.document.writeln('<LINK href=PrintStyle.css ' + 
                    'type="text/css" rel="stylesheet" media="print">')
pp.document.writeln('<base target="_self"></HEAD>')

//Adding Body Tag
pp.document.writeln('<body MS_POSITIONING="GridLayout" bottomMargin="0"');
pp.document.writeln(' leftMargin="0" topMargin="0" rightMargin="0">');
//Adding form Tag
pp.document.writeln('<form method="post">');

//Creating two buttons Print and Close within a HTML table
pp.document.writeln('<TABLE width=100%><TR><TD></TD></TR><TR><TD align=right>');
pp.document.writeln('<INPUT ID="PRINT" type="button" value="Print" ');
pp.document.writeln('onclick="javascript:location.reload(true);window.print();">');
pp.document.writeln('<INPUT ID="CLOSE" type="button" ' + 
                    'value="Close" onclick="window.close();">');
pp.document.writeln('</TD></TR><TR><TD></TD></TR></TABLE>');

//Writing print area of the calling page
pp.document.writeln(document.getElementById(print_area).innerHTML);
//Ending Tag of </form>, </body> and </HTML>
pp.document.writeln('</form></body></HTML>'); 

}

Вы назовете этот сценарий, отправляющий идентификатор DIV, который Вы хотите получить;

btnGet.Attributes.Add("Onclick", "getPrint('YOURDIV');")

Это работало точно, как я хотел. Надежда это помогает

0
ответ дан 18 December 2019 в 10:50
поделиться

it seems that javascript doesn't support lookbehinds which is very disapointing, that would make this problem so much easier to solve.

(?<=

).*(?=<\/div>)

here are some links that might help out tho.

although while discussing the issue of nested tags... that would be beyond the abilities of regex to solve so jeremy's solution is the best you can do with regex. and what is more they have to be on a single line... it won't even match if the the contents of the div are on seperate lines because there is no 's' flag for javascript. I think peter has given the answer for this one.

0
ответ дан 18 December 2019 в 10:50
поделиться

Позвольте jQuery выполнить синтаксический анализ за вас:

$(page_html).find("#LiveArea").html();
0
ответ дан 18 December 2019 в 10:50
поделиться

Извините за поздний ответ, если кто-то еще наткнется на эту проблему, вот мое предложение, предполагая, что у вас есть доступ к странице, которую вы читаете из исходного кода.

Добавьте HTML-комментарий вроде этого

<div id="LiveArea">
<!--LiveArea-->
Content here
<!--EndLiveArea-->
</div>

Затем сопоставьте его с

htmlVal.match(/<\!\-\-LiveArea"\-\->(.*?)<\!\-\-EndLiveArea"\-\->/);
-2
ответ дан 18 December 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: