Как вырезать цифру из строки

Я пытаюсь извлечь число из строки, используя регулярное выражение для JavaScript.

Тестовые случаи

value[0]        ---> 0
value[1]        ---> 1
object2value[0] ---> 0
object90        ---> no match

я пробовал использовать ([\w]+)*?\[\d\], но это дало

value[0]        ---> value[0]
value[1]        ---> value[1]
object2value[0] ---> object2value[0]
object90        ---> no match

как я могу этого добиться.

Поместите \d в группу захвата, а затем используйте match[2], чтобы получить совпадение с этой группой захвата.

Barmar 19.04.2024 00:02

Может ли число быть больше 9? Тогда используй \d+

Barmar 19.04.2024 00:03
([\w]+)*? можно упростить до \w*. А поскольку он может соответствовать пустой строке, вы можете полностью исключить его из регулярного выражения. Вам просто нужно совместить цифру внутри [].
Barmar 19.04.2024 00:04

Разве \b\d+\b не может быть достаточно?

Hao Wu 19.04.2024 03:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте утверждения просмотра назад и вперед:

const tests = `value[0]       
value[1]       
object2value[0]
object90`.match(/\S+/g);

const regex = /(?<=\w+\[)\d+(?=\])/;

tests.forEach(t => console.info(t, '=>', ...t.match(regex) ?? ['no match']));

Чтобы извлечь имя и номер переменной:

const tests = `value[0]       
value[1]       
object2value[0]
object90`.match(/\S+/g);

const regex = /(\w+)\[(\d+)\]/;

tests.forEach(t => {
  const [, value, num] = t.match(regex) ?? [, 'no match', 'no match'];
  console.info(t, '=>', value, ':', num);
});

Спасибо. Можете ли вы также помочь мне с извлечением строковой части? например, value[0] становится value, а value[1].id становится value

A Gilani 19.04.2024 00:24

Гилани, это регулярное выражение соответствует "%[8]&$@#0[9]", с "9" возвращенным совпадением и "0" сохраненным для захвата группы 1. Это нормально? Если вы просто хотите вернуть цифры, заключенные в скобки, и вам не нужно проверять, что было раньше, просто сопоставьте (<=\[)\d+(?=\d) или \[(d+)\]. Если есть совпадение, интересующие цифры будут заданы совпадением в первом случае и будут удерживаться в группе захвата 1 во втором.

Cary Swoveland 19.04.2024 02:31

Другие вопросы по теме