ResponseStringReplace () несовместимое совпадение регулярного выражения

Я пытаюсь использовать response-string-replace, чтобы сопоставить все символы $ в строке текста.

Вот несколько примеров значений, которые мы хотели бы сопоставить (пары акции / крипто / форекс): $ GPRO, $ AMBA, $ BTC / USD, $ LTC / ETH.

Вот наша попытка регулярного выражения

/\$\S+[^\s]*/g

при передаче строки

$this works great $this/works great too.

через .match() - правильные символы возвращаются в виде массива.

0: "$this"
1: "$this/works"

Когда используешь

reactStringReplace () - каждое совпадение возвращается

works great

Любые идеи, почему

reactStringReplace()

кажется, неправильно обрабатывает это регулярное выражение?

Спасибо, да!

Пожалуйста, покажите фактический код, который вы используете. В идеале создать минимальный воспроизводимый пример. Обновлено: добавлены скобки для захвата совпадения: codeandbox.io/s/6v9vorn33w

Chris G 26.09.2018 19:05

вы знаете, что \S и [^\s] - это одно и то же, не так ли?

emsimpson92 26.09.2018 19:39

@chrisg очень признателен ? p.s. извините за отсутствие полезной информации, я учту это в дальнейшем

Laith Azzam 26.09.2018 20:45
Поведение ключевого слова "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
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Проверьте Документация React String Replace, там написано:

reactStringReplace(string, match, func)
...
match
Type: regexp|string

The string or RegExp you would like to replace within string. Note that when using a RegExp you MUST include a matching group.

Зачем вам добавлять группу захвата? См. Функцию replaceString. Существует строка var result = str.split(re);, которая использует шаблон для фактического расколоть содержимого, которое вы передаете регулярному выражению с вашим шаблоном, таким образом, токенизация весь ввод на части, которые соответствуют и те, которые не соответствуют вашему регулярному выражению.

Если вы не добавите группу к регулярному выражению, переданному как Нить, скобки захвата будут добавляется автоматически по всему узору:

if (!isRegExp(re)) {
    re = new RegExp('(' + escapeRegExp(re) + ')', 'gi');
}

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

Итак, используйте

/(\$\S+)/g

Если вы хотите сохранить символы $ на выходе, или

/\$(\S+)/g

если вы хотите опустить доллары.

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