我的任务有一些规则.基本上,我将一个数字分成3组.如果最后一组只有1位数,那么最后2组有2位数而不是1组3和1组1.
例如:
123456789 = 123-456-789
12345678901 = 123-456-789-01
1234567 = 123-45-67
Run Code Online (Sandbox Code Playgroud)
到目前为止我的正则表达式是:
serial.match(/\d{3}|\d+/g)
Run Code Online (Sandbox Code Playgroud)
其中serial是通过函数传入的字符串
function format(serial) {
return serial.replace('/-|/s/g', '').match(/\d{3}|\d+/g).join('-');
}
Run Code Online (Sandbox Code Playgroud)
这让我大部分都在那里,只是在最后一场比赛为{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>');Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |