Я пытаюсь использовать 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()
кажется, неправильно обрабатывает это регулярное выражение?
Спасибо, да!
вы знаете, что \S
и [^\s]
- это одно и то же, не так ли?
@chrisg очень признателен ? p.s. извините за отсутствие полезной информации, я учту это в дальнейшем
Проверьте Документация React String Replace
, там написано:
reactStringReplace(string, match, func)
...
match
Type:regexp|string
The string or RegExp you would like to replace withinstring
. Note that when using aRegExp
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
если вы хотите опустить доллары.
Пожалуйста, покажите фактический код, который вы используете. В идеале создать минимальный воспроизводимый пример. Обновлено: добавлены скобки для захвата совпадения: codeandbox.io/s/6v9vorn33w