Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Как можно вытащить цифры после определенного текста? (https://javascript.ru/forum/css-html-firefox-mizilla/78799-kak-mozhno-vytashhit-cifry-posle-opredelennogo-teksta.html)

Defs 06.11.2019 22:54

Как можно вытащить цифры после определенного текста?
 
Всем привет, может кто знает как реализовать. ;)

Задача:
Есть выкидное меню в нём список с фамилиями, он постоянно меняется так же как и число в скобках напротив каждой фамилии. Первое если есть данная фамилия в списке, то переменной нужно присвоить значение в скобках, если нет этой фамилии в списке то переменной присвоить значение 0.

P.S. Текст поиска уникален на странице.
iMacros for Firefox 8.9.7. FF 56.0.2
.......
<ul class="select2-r">

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
All
</div>
</li>

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
Иванов (43)
</div>
</li>

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
Зайков (18)
</div>
</li>

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
Петров (11)
</div>
</li>

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
Сидоров (24)
</div>
</li>

........

</ul>
.......

рони 06.11.2019 23:54

поиск regexp именованные группы и деструктуризация
 
Defs,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>


</head>

<body>
<ul class="select2-r">

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
All
</div>
</li>

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
Иванов (43)
</div>
</li>

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
Зайков (18)
</div>
</li>

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
Петров (11)
</div>
</li>

<li class="select2-rs">
<div class="select2-rl">
<span class="select2-m"></span>
Сидоров (24)
</div>
</li>

........

</ul>
  <script>
    const divs = [...document.querySelectorAll(".select2-rl")];
    const reg = /(?<name>[а-яё]+)\s+\((?<number>\d+)\)/i;
    const obj = divs.reduce((ob, div) => {
    const groups =  div.textContent.match(reg);
    if(groups) {
    const {name, number} = groups.groups;
    ob[name] = number;
    }
    return ob
    }, {})
    alert(obj.Сидоров)
  </script>
</body>
</html>

рони 06.11.2019 23:55

Defs,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.


Часовой пояс GMT +3, время: 03:13.