Как заменить последний символ выбранного регулярного выражения?

Я хочу, чтобы эта строка {Rotation:[45f,90f],lvl:10s} превратилась в {Rotation:[45,90],lvl:10}.

Я пробовал это:

const bar = `{Rotation:[45f,90f],lvl:10s}`
const regex = /(\d)\w+/g
console.info(bar.replace(regex, '$&'.substring(0, -1)))

Я также пытался просто выбрать букву в конце, используя $, но я не могу понять это правильно.

Наверное будет bar.replace(/(\d+)[a-z]\b/gi, '$1')

Wiktor Stribiżew 21.03.2022 22:28
Поведение ключевого слова "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
1
32
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Следующее регулярное выражение будет соответствовать каждой группе из одной или нескольких цифр, за которыми следует f или s.

$1 представляет содержимое, захваченное группой захвата (\d).

const bar = `{Rotation:[45f,90f],lvl:10s}`
const regex = /(\d+)[fs]/g
console.info(bar.replace(regex, '$1'))

Это работает только для букв f и s, не так ли?

Trojo 21.03.2022 22:31

@Trojo Да, обновите свой вопрос, если у вас есть более подробные критерии. Очевидно, вы можете использовать [a-z], если хотите.

MikeM 21.03.2022 22:32

Проверь это :

const str = `{Rotation:[45f,90f],lvl:10s}`.split('');
const x = str.splice(str.length - 2, 1)
console.info(str.join(''));

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

const bar= '{Rotation:[45f,90f],lvl:10s}'
const regex = /.(?=})/g
console.info(bar.replace(regex, ''))
{Rotation:[45f,90f],lvl:10}
Ответ принят как подходящий

Ты можешь использовать

bar.replace(/(\d+)[a-z]\b/gi, '$1')

См. демонстрация регулярных выражений. Здесь,

  • (\d+) - захватывает одну или несколько цифр в группу 1
  • [a-z] - соответствует любой букве
  • \b - на границе слова, т.е. в конце слова
  • gi - все вхождения, без учета регистра

Замена является значением группы 1, $1.

См. демонстрацию JavaScript:

const bar = `{Rotation:[45f,90f],lvl:10s}`
const regex = /(\d+)[a-z]\b/gi
console.info(bar.replace(regex, '$1'))

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