regex - TypeScript 字符串替换为正则表达式、组和部分字符串

标签 regex typescript replace

我想在输入时使用正则表达式格式化输入中的数字。
我的问题是:由于我使用组来格式化数字,它只在字符串与正则表达式匹配时格式化。 下面是一个例子:
完整号码是:12312312312 |格式化看起来像:123.123.123-12

例如,如果我键入 1231231,它不会像我预期的那样格式化为 123.123.1,只有当我键入整个数字时。

这是我的功能:

format(value){
    // This function returns the formatted string on user input
    return value.replace(/(\d{3})(\d{3})(\d{3})(\d+)/, "\$1.\$2.\$3-\$4");
}

有什么方法可以使剩余的组成为可选的吗?

最佳答案

你可以用

function formatStr(str){
  str = str.replace(/(\d{1,3})(\d{0,3})(\d{0,3})(\d{0,2})/g, function(a, b, c, d, e){
        let ret = "";
        if(b != "")
            ret = b;
        if(c != "")
            ret = ret+"." + c;
        if(d != "")
            ret = ret+"." + d;
        if(e != "")
            ret = ret+"-" + e;
        return ret;
  })
  console.log(str);
}

formatStr('12312312312');
formatStr('1231231');

关于regex - TypeScript 字符串替换为正则表达式、组和部分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45699571/

相关文章:

python - 是否可以在 Pandas 的 loc 中使用 loc 来替换值?

python - 正则表达式过滤列表中的项目,只包含那些包含非 a-z 字符的项目

Javascript new RegExp vs./pattern/和多行

javascript - Angular 5 : Multiple requests at once with forkJoin

angular - 使用 rxjs 运算符是否可以获得倒数第二个值

javascript - TypeScript各种文件扩展名解释?

javascript - 如何根据哈希表替换对象值(例如 "State": "CO" changes to "State": "Colorado")

Java正则表达式查找所有介于但最后一个字符之前或之后的字符

javascript url 安全文件名安全字符串

string - 最有效的字符串替换算法?