I think this should work:
function formatPriceFromString(price) {
  price = price.replace(/[^\d\.\,]+/g, '')
  // WHEN PRICE FORMAT 1.000,00
  if (/\.[^\,\.]+\,/g.test(price))
    price = price.replace(/\./g, '').replace(/\,/, '.')
  // WHEN PRICE FORMAT 1,000.00
  else if (/\,[^\,\.]+\./g.test(price))
    price = price.replace(/\,/g, '')
  // WHEN PRICE FORMAT 100,00 OR 100.00
  else
    price = price.replace(/\,/g, '.')
  return Number(price)
}
console.log(formatPriceFromString('$1,100.00'))
console.log(formatPriceFromString('$1,100,000.00'))
console.log(formatPriceFromString('$1,100.00'))
console.log(formatPriceFromString('$1.100,00'))
console.log(formatPriceFromString('$1.100.000,00'))
console.log(formatPriceFromString('$1 100 000,00'))
console.log(formatPriceFromString('$1 100 000.00'))
console.log(formatPriceFromString('134, 99 PLN'))
 LOG  1100
 LOG  1100000
 LOG  1100
 LOG  1100
 LOG  1100000
 LOG  1100000
 LOG  1100000
 LOG  134.99