【发布时间】:2023-02-07 20:27:28
【问题描述】:
我有一个值,我想添加两个连字符。
例如,如果我收到:
FN322KN
我想将其转换为:
FN-322-KN
我正在尝试使用此解决方案 (Mask javascript variable value),但我被困在这里:
代码:
变量值 = 'FN322KN';
var formatted = value.replace(/^(.{2})(.{5}).*/, '$1-$2');
结果:
'FN-322KN'
有人可以告诉我如何添加第二个“-”吗?
更新!!
Mark Baijens 和 Buttered_Toast 的答案都是正确的。不过我还有一个问题。如果值像 FN-322KN 或 F-N322-KN 一样怎么办?比如格式不对?因为如果是这种情况,那么它会在已经存在的地方添加一个 hifen,使其成为“--”。
谢谢!
【问题讨论】:
-
FN322KN这个字符串有什么逻辑可以匹配字符A-Z和数字吗? -
你总是想要前 2 个字符和前 5 个字符之后的连字符吗?
-
每当
A到Z的字符后跟一个数字 .../[A-Z](?=\d)/g... 以及每当一个数字后跟A到Z的字符时,OP 似乎都想要连字符.../\d(?=[A-Z])/g... 这导致以下任一解决方案 ...'FN322KN'.replace(/[A-Z](?=\d)/g, '$&-').replace(/\d(?=[A-Z])/g, '$&-');...'FN322KN'.replace(/[A-Z](?=\d)|\d(?=[A-Z])/g, '$&-'); -
@NunoPacheco ...请OP确认一些评论的猜测或提出上述问题的精确制定的验收标准。
标签: javascript regex ecmascript-6