繁体   English   中英

javascript正则表达式条件编号格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM