gpt4 book ai didi

javascript正则表达式条件数字格式

转载 作者:行者123 更新时间:2023-11-29 16:07:54 25 4
gpt4 key购买 nike

我的任务有一些规则。基本上,我将一个数字分成 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} 时没有正确拆分。

我通过 fiddle 取得的进步:https://jsfiddle.net/dboots/2mu0yp2b/2/

最佳答案

您可以使用带前瞻性的正则表达式。

Positive Lookahead 查找等号后的模式,但不将其包含在匹配中。

x(?=y)

Matches 'x' only if 'x' is followed by 'y'. This is called a lookahead.

For example, /Jack(?=Sprat)/ matches 'Jack' only if it is followed by 'Sprat'. /Jack(?=Sprat|Frost)/ matches 'Jack' only if it is followed by 'Sprat' or 'Frost'. However, neither 'Sprat' nor 'Frost' is part of the match results.

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>');

关于javascript正则表达式条件数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36498929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com