para aclarar que estoy usando React y Material UI. Tengo cadenas en el formato de: CAD - Canadian Dollar y me gustaría usar expresiones regulares para crear una cadena que sería equivalente al Canadian Dollar . Esencialmente, todo lo que está antes de - debería eliminarse, y el único espacio en blanco frente a él también debería eliminarse. Después de eso, me gustaría establecer alguna variable para que sea igual a esa cadena de retorno.
Aquí está mi intento:
const userCurrency = 'USD - United States Dollar'
const varSetter = (e) => {
var test1 = e.target.innerText;
setUserCurrency(test1);
console.log(userCurrency);
const currencyRegex = userCurrency.match(/[^-]*$/g)
console.log(currencyRegex);
}
Esto devuelve una matriz [' United States Dollar', ''] pero, ¿cómo elimino el espacio en blanco inicial y obtengo el resultado como una cadena y no como una matriz? ¡Gracias!
Utilice la función replace() para eliminar la coincidencia del patrón.
const currencyRegex = userCurrency.replace(/.*\s+-\s+/, '');
Esta expresión regular coincide con todo hasta el último - . También requiere un espacio en blanco alrededor de - y también elimina el espacio en blanco después de él.
Hay algunas maneras de manejar esto... si todas las cadenas tienen el mismo patrón de [prefix] - [currency name] , entonces podría cambiar su RegEx para usar un lookbehind y combinar esto con la desestructuración de la matriz :
const [currency] = 'USD - United States Dollar'.match(/(?<=-\s).+/)
console.log(currency); // 'United States Dollar'
Sin embargo, ¿realmente necesita una expresión regular? Si siempre es un prefijo de tres caracteres, entonces la substring es adecuada para el propósito:
const currency = 'USD - United States Dollar'.substring(6);
console.log(currency); // 'United States Dollar'