Как я могу извлечь каждое целое число или число с плавающей запятой (положительное или отрицательное) из строки в js

Это мой код. Он по-прежнему возвращает ноль, и я не знаю, почему!

var tName = "18.56x^2   -   5.45x  -3.78";
abc = tName.replace(/x/g, "").replace("^2", "").replace(/\s/g, "");
console.info(abc);

$re = "/-?\\d+(?:\\.\\d+)?/m";
$str = abc.toString();
console.info($str.match($re));

просто подсказка, которую вы можете использовать https://regex101.com/ для отладки своего регулярного выражения

Aalexander 14.12.2020 09:25
stackoverflow.com/questions/10003683/… Это может помочь
Abdallah Elsayed 14.12.2020 09:25

Также $str = abc.toString(); не нужен

mplungjan 14.12.2020 09:29
Поведение ключевого слова "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) для оценки ваших знаний,...
1
3
55
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ваше регулярное выражение в порядке, вы просто настроили его как строку вместо литерала регулярного выражения.

Когда вы создаете константы RegExp, вы хотите либо использовать конструктор RegExp() (для построения из строк), либо просто литерал регулярного выражения. В настоящее время вы строите обычную строку, которая выглядит как регулярное выражение, но таковой не является.

Попробуйте отредактировать эту строку следующим образом:

$re = /-?\d+(?:\.\d+)?/m;

Редактировать:

Чтобы получить доступ к самой строке, вам просто нужно использовать индекс 0.

var mat = $str.match($re);
console.info(mat[0])

спасибо, это сработало, однако я не получил того, что хотел, я думаю, что мое регулярное выражение неверно...

7Wdev 14.12.2020 09:36

я получил: ['18.56', индекс: 0, ввод: '18.56-5.45-3.78', группы: не определено]

7Wdev 14.12.2020 09:36

Да, это «совпадающий объект», попробуйте добавить [0] в конце, чтобы сослаться на совпадающую строку.

Keldan Chapman 14.12.2020 09:37

используйте регулярное выражение (не строку) в качестве параметра String.prototype.match() следующим образом:

var tName = "18.56x^2   -   5.45x  -3.78";
abc = tName.replace(/x/g, "").replace("^2", "").replace(/\s/g, "");

$re = /-?\d+(?:\.\d+)?/m;
$str = abc.toString();
console.info($str.match($re));
Ответ принят как подходящий

Вам нужно

  • не указывать регулярное выражение И
  • не избежать \d И
  • добавить глобальный флаг

Попробуйте с этим

const $re = /-?\d+(?:\.\d+)?/mg,
      tName = "18.56x^2   -   5.45x  -3.78",
      abc = tName.replace(/x/g, "").replace("^2", "").replace(/\s/g, ""),
      nums = [...abc.matchAll($re)].map(m => m[0]);
console.info(abc)
console.info(nums)

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