Necesito cambiar el campo dinámico y establecer el formato con este código. Al formatear mi código postal, su texto proviene del servidor como

123456789

Y este método jQuery cambia este formato de valor 1234-56789

var ZIptext = $("#ZipLabel").text();
    var reformat = ZIptext.replace(/(\d{5})/g, function (match) {
        return match + "-";
    });
    $("#ZipLabel").text(reformat.replace(/\-$/, ""))

Pero sé que tengo un problema, necesito cambiar el formato de mi número de fax

3453454354 

Y debería ser como

345-345-4354 

Entonces, ¿alguien puede ayudarme?

0
Coder 12 may. 2016 a las 09:25

3 respuestas

La mejor respuesta

Hazlo con la captura de expresiones regulares grupales

var res = '3453454354'.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');

document.write(res);
2
Pranav C Balan 12 may. 2016 a las 06:28

Esta pregunta es similar a esta aquí.

Puedes hacer esto usando:

'345345345'.replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'$1-$2-$3'))
1
Community 23 may. 2017 a las 12:07

Aquí hay una función para hacerlo genéricamente.

El primer argumento es la cadena de entrada, el segundo es el carácter separador y el tercero es una matriz de longitudes para separar la entrada. También puede especificar un '*' como último argumento.

function separate(_input, _separator, _lengths) {
  var output = [], i = 0;
  for(i=0; i<_lengths.length; i++) {
    if(_input.length <= _lengths[i] || _lengths[i] === '*') {
      output.push(_input);
      break;
    }
    output.push(_input.substr(0, _lengths[i]));
    _input = _input.substr(_lengths[i]);
  }
  return output.join(_separator);
}

Ejemplos de uso:

separate('3453454354', '-', [3, 3, 4]); // returns "345-345-4354"

separate('3453454354', '-', [4,'*']); // returns "3453-454354"
1
techfoobar 12 may. 2016 a las 06:36