¿Cómo eliminar solo los últimos puntos en los caracteres en jquery?
Ejemplo:
1..
1.2.
Resultado Esperado:
1
1.2
Mi código:
var maskedNumber = $(this).find('input.CategoryData');
var maskedNumberValue = $(maskedNumber).val().replace(/[^0-9.]/g, '').replace('.', 'x').replace('x', '.').replace(/[^\d.-]/g, '');
console.log(maskedNumberValue.slice(0, -1))
¿Cómo soluciono este problema? Gracias
Puede usar regex replace para eso:
function removeLastDot(value) { return value.replace(/\.*$/, '') } console.log(removeLastDot('1..')) console.log(removeLastDot('1.2.')) En el ejemplo, uso \.*$ expresión regular:
$ - significa que quiero reemplazar al final de la cadena\.* - significa que quiero hacer coincidir cualquier número para . símbolo (se escapa porque es un símbolo especial en expresiones . )Puede recorrer la cadena con forEach y almacenar el último índice de cualquier número en una variable. Luego corte hasta esa variable.
let lastDigitIndex = 0; for (let i = 0; i < str.length; i++) { let c = str[i]; if (c >= '0' && c <= '9') lastDigitIndex = i; }; console.log(str.slice(0, lastDigitIndex-1));Esta será una solución óptima.
Agregue replace(/\.*$/g, '') para hacer coincidir uno o más puntos al final de la cadena.
Así que tu código sería así:
var maskedNumberValue = $(maskedNumber).val().replace(/[^0-9.]/g, '').replace('.', 'x').replace('x', '.').replace(/[^\d.-]/g, '').replace(/\.*$/g, '');