我的问题有点奇怪,我试图使用 Replace() 和 Regex 按以下方式转换字符串:输入“203012”(因此如果没有斜杠),输出应为“12/2030”从输入“12/2030”(因此如果已经有斜杠)输出应保持不变我知道我可以在使用replace()之前使用条件来检查字符串,但我试图仅使用replace()和正则表达式来实现。我尝试过使用类似的const result = input.replace( /\//g, replaced => replaced.replace( /^(.{4})(.{2})/, '$2/$1' ))当然,此代码替换了之前的最终斜杠,但在重新插入“/”时它总是反转值。有谁知道如何实现这一目标?谢谢。
1 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
您可以使用
input = input.replace(/^(\d{4})(\d{2})$/, '$2/$1')
请参阅正则表达式演示。细节:
^
- 字符串的开头(\d{4})
- 捕获组 1 ($1
):四位数字(\d{2})
- 捕获组 2 ($2
):两位数$
- 字符串末尾。
如果字符串仅包含 6 位数字,则会出现匹配,并且/
会在第 2 组和第 1 组值之间插入 a。
如果有斜杠,则不会匹配,因此不会添加斜杠。
查看 JavaScript 演示:
const strings = ['203012', '12/2030']; strings.forEach(x => console.log(x, '=>', x.replace(/^(\d{4})(\d{2})$/, '$2/$1')))
添加回答
举报
0/150
提交
取消