Создание регулярного выражения для получения нескольких значений и печати

  • Автор темы Danielprah
  • Обновлено
  • 13, May 2024
  • #1
Мне нужна помощь с приведенным ниже кодом.

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

 
<p id="demo"></p>

<script>
var str = "Please 127.0.0.1:80 locate where 127.0.0.2:80 occurs!";
var pos = str.search("\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):\d{1,5}\b");
document.getElementById("demo").innerHTML = pos;
</script>


Код (разметка): Спасибо.

Danielprah


Рег
07 Feb, 2014

Тем
73

Постов
176

Баллов
601
  • 04, Jun 2024
  • #2
@ActiveFrost - спасибо за ответ...

После тестирования я обнаружил, что с вашим кодом есть некоторые проблемы.

- Вы изменили регулярное выражение, чтобы оно соответствовало ips, но на консоли выдается

["7.0.0.1:80", "7.0.0.2:80"], тогда как должно быть ["127.0.0.1:80","127.0.0.2:80"]

- Что-то я давно искал...

Как распечатать на странице текст, сгенерированный в console.log()?
 

Ontoriealonse


Рег
28 Dec, 2015

Тем
61

Постов
204

Баллов
519
  • 06, Jun 2024
  • #3
 [
"127.0.0.1:80",
"127.0.0.2:80"
]


Code (JavaScript):

Output:

 console.log(
 str.match(/([1-9]|[0-9]|[0-9]).([0-9]|[0-9]|[0-9]).([0-9]|[0-9]|[0-9]).([0-9]|[0-9]|[0-9]):[0-9]+/g)
);


Код (разметка):
 

Direg1


Рег
01 Sep, 2014

Тем
61

Постов
188

Баллов
513
  • 07, Jun 2024
  • #4
@ActiveFrost — Спасибо за код. У меня еще один вопрос по той же теме.

Приведенный выше код кажется понятным и после тестирования работает.

Проблема в том, что когда я попытался включить его в свой скрипт, я получил ошибку.

По сути, сценарий, который я создаю, получает RSS-канал, преобразуется в JSON, и оттуда код ниже выполняется в цикле for...

 
for (x in myObj.items) {

// This line should print the demo
document.write('<div id="demo"></div>');

// This lines should read the obj description from the feed and match the ip:port regex.
var str = ''+myObj.items[x].description+'';
var result = str.match(/([0-9]?[0-9]?[0-9]).([0-9]?[0-9]?[0-9]).([0-9]?[0-9]?[0-9]).([0-9]?[0-9]?[0-9]):[0-9]+/g);
for (i = 0; i < result.length; i++) {
document.getElementById("demo").innerHTML += result[i] + "<br>";
}
}


Код (разметка): Проблема в циклах for, при использовании обоих они не работают.

Идея состоит в том, чтобы получить 10 результатов ленты, прочитать описание каждого фильтра и вывести его на экран. Спасибо
 

Елена3


Рег
06 Mar, 2012

Тем
69

Постов
182

Баллов
567
  • 11, Jun 2024
  • #5
Извините, немного напутал с оператором OR. Это (см. ниже) помогает.

 var str = "Please 127.0.0.1:80 locate where 127.0.0.2:80 occurs!";

var result = str.match(/([0-9]?[0-9]?[0-9]).([0-9]?[0-9]?[0-9]).([0-9]?[0-9]?[0-9]).([0-9]?[0-9]?[0-9]):[0-9]+/g);

for (i = 0; i < result.length; i++) {
 document.getElementById("output").innerHTML += result[i] + '<br>';
}


HTML:

 <div id="output"> </div>


Код (JavaScript):
 

Serjs


Рег
01 Jan, 2011

Тем
54

Постов
197

Баллов
477
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно