我想在输入时使用正则表达式来格式化输入中的数字.
我的问题是:由于我使用组来格式化数字,它只在字符串与正则表达式匹配时才格式化.
这是一个例子:
完整的号码是:12312312312 |格式化为:123.123.123-12.
我的问题是:由于我使用组来格式化数字,它只在字符串与正则表达式匹配时才格式化.
这是一个例子:
完整的号码是: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,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');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。