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

Javascript 如何添加'/';在Js中的字符串中,但仅当在上一步中未使用正则表达式找到斜杠时才反转它?,javascript,regex,Javascript,Regex,我的问题有点奇怪,我尝试使用replace()和Regex以以下方式转换字符串: 从输入“203012”(因此,如果没有斜线),输出应为“12/2030” 从输入“12/2030”(因此,如果已经有斜线),输出应保持不变 我知道我可以在使用replace()之前使用条件检查字符串,但我尝试使用replace()和RegEx来实现 我尝试的是使用 const result=input.replace( /\//g、 替换=>replaced.replace( /^(.{4})(.{2})/,

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

  • 从输入“203012”(因此,如果没有斜线),输出应为“12/2030”
  • 从输入“12/2030”(因此,如果已经有斜线),输出应保持不变
我知道我可以在使用replace()之前使用条件检查字符串,但我尝试使用replace()和RegEx来实现

我尝试的是使用

const result=input.replace(
/\//g、 替换=>replaced.replace(
/^(.{4})(.{2})/, '$2/$1'
)
)
您可以使用

input=input.replace(/^(\d{4})(\d{2})$/,“$2/$1”)
看。详情:

  • ^
    -字符串的开头
  • (\d{4})
    -捕获组1(
    $1
    ):四位数字
  • (\d{2})
    -捕获组2(
    $2
    ):两位数
  • $
    -字符串结束
如果字符串仅由六位数字组成,则将有一个匹配项,并在组2和组1值之间插入一个
/

如果有斜杠,则不存在匹配项,因此不会添加斜杠

请参阅JavaScript演示:

const strings=['203012','12/2030'];

strings.forEach(x=>console.log(x,'=>',x.replace(/^(\d{4})(\d{2})$/,'$2/$1'))
只需使用
input.replace(/^(\d{4})(\d{2})$/,'$2/$1')
。为什么要替换多次出现的
/
?这回答了问题,我只是没有想到这一点,因为我还在学习正则表达式,我的理解是它只匹配前4位字符和随后的2位字符,然后替换为/,而如果它已经包含“/”,正则表达式根本不匹配,解决了问题。谢谢,这是一个很好的解决办法:)很高兴我的回答对你有用。如果我的回答对你有帮助,也请告诉我。