Home > Software design >  How do I replace the last character of the selected regex?
How do I replace the last character of the selected regex?

Time:03-22

I want this string {Rotation:[45f,90f],lvl:10s} to turn into {Rotation:[45,90],lvl:10}.

I've tried this

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

I've also tried to just select the letter at the end using $ but I can't seem to get it right.

CodePudding user response:

You can use

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

See the regex demo. Here,

  • (\d ) - captures one or more digits into Group 1
  • [a-z] - matches any letter
  • \b - at the word boundary, ie. at the end of the word
  • gi - all occurrences, case insensitive

The replacement is Group 1 value, $1.

See the JavaScript demo:

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

CodePudding user response:

Check this out :

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

CodePudding user response:

You can use positive lookahead to match the closing brace, but not capture it. Then the single character can be replaced with a blank string.

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

CodePudding user response:

The following regex will match each group of one or more digits followed by f or s.

$1 represents the contents captured by the capture group (\d).

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

  • Related