如何在 Js 中的字符串中添加“/”,但仅当使用正则表达式在上一步中未找到斜杠时才将其反转?

我的问题有点奇怪,我试图使用 Replace() 和 Regex 按以下方式转换字符串:

  • 输入“203012”(因此如果没有斜杠),输出应为“12/2030”

  • 从输入“12/2030”(因此如果已经有斜杠)输出应保持不变

我知道我可以在使用replace()之前使用条件来检查字符串,但我试图仅使用replace()和正则表达式来实现。

我尝试过使用类似的

const result = input.replace(

  /\//g, replaced => replaced.replace(

    /^(.{4})(.{2})/, '$2/$1'

  )

)

当然,此代码替换了之前的最终斜杠,但在重新插入“/”时它总是反转值。

有谁知道如何实现这一目标?谢谢。


人到中年有点甜
浏览 96回答 1
1回答

汪汪一只猫

您可以使用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')))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript