如何替换所选正则表达式的最后一个字符?

How do I replace the last character of the selected regex?

我希望这个字符串 {Rotation:[45f,90f],lvl:10s} 变成 {Rotation:[45,90],lvl:10}.

我试过这个:

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

我也试过 select 使用 $ 最后的字母,但我似乎做对了。

以下正则表达式将匹配每组一个或多个数字后跟 fs

</code>表示捕获组<code>(\d).

捕获的内容

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

看看这个:

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

您可以使用正向先行来匹配右大括号,但不能捕获它。那么单个字符可以用空字符串代替。

const bar= '{Rotation:[45f,90f],lvl:10s}'
const regex = /.(?=})/g
console.log(bar.replace(regex, ''))
{Rotation:[45f,90f],lvl:10}

您可以使用

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

参见regex demo。 这里,

  • (\d+) - 将一个或多个数字捕获到组 1
  • [a-z] - 匹配任何字母
  • \b - 在单词边界处,即。在词尾
  • gi - 所有出现,不区分大小写

替换为第 1 组值,</code>。</p> <p>查看 JavaScript 演示:</p> <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code"> <pre><code>const bar = `{Rotation:[45f,90f],lvl:10s}` const regex = /(\d+)[a-z]\b/gi console.log(bar.replace(regex, ''))