Ya intenté usar esto para la intención mencionada anteriormente
var str = "48abc5,2d25.,ft87"; str = str.replace(/[^\d(,.)?]/g, ''); console.log(str);Esperaba que la salida fuera 485,225 debido a la condición 0-1 a través del signo de interrogación.
Sin embargo, mi salida es 485,225.,87
Simplemente, mi enfoque final es tener un número separado por una coma o un punto. El siguiente patrón encajaría con mi intención:
{1-9}+{0-9)?{, | . {1-9} *
Me encantaría escuchar sus soluciones.
Dentro de las clases de caracteres, todos los caracteres son literales, excepto ^ , \ , [ y - . entonces no se puede sumar ? allí y esperar que se comporte como un cuantificador.
Necesitas
var str = "48abc5,2d25.,ft87"; str = str.replace(/[^\d,.]+/g, '').replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '$1').replace(/^0+/, ""); console.log(str); La .replace(/[^\d,.]+/g, '') elimina todos los caracteres que no sean dígitos, puntos y comas.
La .replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '$1') mantiene el primer filete de dígitos y, opcionalmente, una segunda racha de dígitos después del primero . o , .
La .replace(/^0+/, "") elimina uno o más dígitos 0 al principio de la cadena.
Su violín de demostración fijo:
function testRegex(event){ let evt = event || window.event console.log(evt.target.value) document.getElementById("result").innerHTML = "Result: "+ evt.target.value.replace(/[^\d,.]+/g, '') .replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '$1') .replace(/^0+/, ""); } <label>Value:</label> <input onkeyup="testRegex()" type="text"/> <p id="result">Result:</p>