javascript - 如何扩展这个正则表达式以匹配这个掩码?

标签 javascript regex formatting

我找到了以下解决方案,用于在每 4 个字符后添加破折号:

$('.number_to_format').keyup(function() {
  var foo = $(this).val().split("-").join("");
  if (foo.length > 0) {
      foo = foo.match(new RegExp('.{1,4}', 'g')).join("-");
  }
  $(this).val(foo);
});

但是我有一个更难的问题需要解决,当我输入数字时,我的输入应该与此格式完全匹配:

99999999-9-99

因此自动在第 8 个和第 9 个字符后面添加破折号。

我已经尝试过 jQuery 屏蔽插件,但我想要没有插件的解决方案。

我应该如何扩展上面的正则表达式才能使其正常工作?谢谢

最佳答案

(输出将为 99999999-9-99)

<input type="text"  id="data">

$(document).ready(function ()
$('#data').keyup(function () {
    var x = $(this).val();
    console.dir(x);
    x = x.replace(/[^0-9]/gi, '');
    if (x.length > 9) x = x.replace(/(\d{8})(\d)(\d+)/, '$1-$2-$3');
    else if (x.length > 8) x = x.replace(/(\d{8})(\d+)/, '$1-$2');
    else x = x;
    $(this).val(x);
});
});

Demo here

关于javascript - 如何扩展这个正则表达式以匹配这个掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27061283/

相关文章:

javascript - 更正编码错误的字符串(ASCII 字符恢复为 UTF-8)

Java 的replaceAll 有限制

regex - Notepad++ 正则表达式找到一个 ","并在每一行中用 ","替换奇数 "."

go - VS 代码不格式化 GO 代码

可以创建详细的类 CSS 反射的 Javascript 库 :

javascript - 下拉菜单上的 jQuery val() 返回值 "Array"

javascript - 日期和时间的问题是对话取决于本地时区

c - 正则表达式获取所有不带属性的html标签

iphone - Xcode格式预生成代码

css - :first-child selecting two elements