Javascript 如何添加'/';在Js中的字符串中,但仅当在上一步中未使用正则表达式找到斜杠时才反转它?
我的问题有点奇怪,我尝试使用replace()和Regex以以下方式转换字符串: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})/,
- 从输入“203012”(因此,如果没有斜线),输出应为“12/2030”
- 从输入“12/2030”(因此,如果已经有斜线),输出应保持不变
const result=input.replace(
/\//g、 替换=>replaced.replace(
/^(.{4})(.{2})/, '$2/$1'
)
)
您可以使用
input=input.replace(/^(\d{4})(\d{2})$/,“$2/$1”)
看。详情:
-字符串的开头^
-捕获组1((\d{4})
):四位数字$1
-捕获组2((\d{2})
):两位数$2
-字符串结束$
/
如果有斜杠,则不存在匹配项,因此不会添加斜杠
请参阅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位字符,然后替换为/,而如果它已经包含“/”,正则表达式根本不匹配,解决了问题。谢谢,这是一个很好的解决办法:)很高兴我的回答对你有用。如果我的回答对你有帮助,也请告诉我。