我看到了很多答案的日期问题与Safari和IE的日期,使用replace(/-/g, "/")工程就像一个魅力为这些案件2022-11-30 17:00 UTC+0200,但遇到了一个问题,当我有其他时区像这样的一个2022-11-28 21:56 UTC-0500它会再次创建一个无效的日期,为任何浏览器。因此,我正在寻找一个解决方案,将取代“-”不是全局,但只有在第一个字最终。谢谢你
replace(/-/g, "/")
2022-11-30 17:00 UTC+0200
2022-11-28 21:56 UTC-0500
sqxo8psd1#
那又怎么样?
const date = `2022-11-30 17:00 UTC-0200` const regex = /(\d+)-(\d+)-(\d+)/g const result = date.replace(regex, '$1/$2/$3') console.log(result)
yc0p9oo02#
您可以选择性地在-之前撷取UTC,如果撷取到x1m0 n1,,则将整个相符项目放回原处,否则将-取代为/:
-
UTC
/
const text = "2022-11-28 21:56 UTC-0500"; console.log( text.replace(/(UTC)?-/g, (x,y) => y ? x : "/") )
在这里,
(UTC)?-
(x,y) => y ? x : "/"
y
x
lookbehind版本:
const text = "2022-11-28 21:56 UTC-0500"; console.log( text.replace(/(?<!UTC)-/g, "/") ) // => 2022/11/28 21:56 UTC-0500
(?<!UTC)-与-匹配,但该-前面不紧跟着UTC。
(?<!UTC)-
2条答案
按热度按时间sqxo8psd1#
那又怎么样?
yc0p9oo02#
您可以选择性地在
-
之前撷取UTC
,如果撷取到x1m0 n1,,则将整个相符项目放回原处,否则将-
取代为/
:在这里,
(UTC)?-
-匹配并捕获组1中的可选UTC
,然后匹配-
字符(x,y) => y ? x : "/"
-如果y
(组1)匹配,则放回x
(整个匹配),否则,放/
而不是-
。lookbehind版本:
(?<!UTC)-
与-
匹配,但该-
前面不紧跟着UTC
。