Regular expression to remove a file's extension

Just for completeness: How could this be achieved without Regular Expressions?

var input = 'myfile.png';
var output = input.substr(0, input.lastIndexOf('.')) || input;

The || input takes care of the case, where lastIndexOf() provides a -1. You see, it's still a one-liner.


/(.*)\.[^.]+$/

Result will be in that first capture group. However, it's probably more efficient to just find the position of the rightmost period and then take everything before it, without using regex.


The regular expression to match the pattern is:

/\.[^.]*$/

It finds a period character (\.), followed by 0 or more characters that are not periods ([^.]*), followed by the end of the string ($).

console.log( 
  "aaa.bbb.ccc".replace(/\.[^.]*$/,'')
)