更改动态范围的文本格式

时间:2016-05-12 06:26:00

标签: javascript jquery asp.net regex text

我需要更改字段动态并使用此代码设置格式我格式化我的邮政编码,其文本来自服务器端,如

123456789

这个jQuery方法改变了这个值格式     1234-56789

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

但知道我遇到问题我需要更改传真号码的格式

3453454354 

它应该像

345-345-4354 

有人可以帮助我

3 个答案:

答案 0 :(得分:2)

使用捕获组正则表达式



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

document.write(res);




答案 1 :(得分:1)

这个问题类似于here.

您可以使用以下方式执行此操作:

'345345345'.replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'$1-$2-$3'))

答案 2 :(得分:1)

这是一个通用的功能。

第一个参数是输入字符串,第二个参数是分隔符,第三个参数是用于分隔输入的长度数组。您也可以指定'*'作为最后一个参数。

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);
}

用法示例:

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

separate('3453454354', '-', [4,'*']); // returns "3453-454354"