[英]javascript regex conditional number formatting
我的任务有一些规则。 基本上,我将数字分为3组。如果最后一组中只有1位数字,那么最后2组中有2位数字,而不是1组3和1组1。
例如:
123456789 = 123-456-789
12345678901 = 123-456-789-01
1234567 = 123-45-67
到目前为止,我的正则表达式是:
serial.match(/\d{3}|\d+/g)
其中serial是通过函数传递的字符串
function format(serial) {
return serial.replace('/-|/s/g', '').match(/\d{3}|\d+/g).join('-');
}
这使我获得了大部分机会,只是在最后一场比赛是{4}时无法正确分割。
我通过小提琴取得的进展: https : //jsfiddle.net/dboots/2mu0yp2b/2/
您可以将正则表达式与超前一起使用。
正向前瞻在等号后寻找模式,但不将其包括在比赛中。
X(ω= Y)
仅在“ x”后跟“ y”时匹配“ x”。 这称为先行。
例如,
/Jack(?=Sprat)/
仅在其后跟“ Sprat”时匹配“ Jack”。/Jack(?=Sprat|Frost)/
仅在其后跟“ Sprat”或“ Frost”时匹配“ Jack”。 但是,“ Sprat”和“ Frost”都不是比赛结果的一部分。
function format(s) { return s.toString().replace(/\\d{2,3}(?=..)/g, '$&-'); } document.write(format(123456789) + '<br>'); document.write(format(12345678901) + '<br>'); document.write(format(1234567) + '<br>');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.