regex 修复了Safari和IE的无效日期,但未使用负UTC

hsgswve4  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(82)

我看到了很多答案的日期问题与Safari和IE的日期,使用replace(/-/g, "/")工程就像一个魅力为这些案件2022-11-30 17:00 UTC+0200,但遇到了一个问题,当我有其他时区像这样的一个2022-11-28 21:56 UTC-0500它会再次创建一个无效的日期,为任何浏览器。
因此,我正在寻找一个解决方案,将取代“-”不是全局,但只有在第一个字最终。
谢谢你

sqxo8psd

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)
yc0p9oo0

yc0p9oo02#

您可以选择性地在-之前撷取UTC,如果撷取到x1m0 n1,,则将整个相符项目放回原处,否则将-取代为/

const text = "2022-11-28 21:56 UTC-0500";
console.log( text.replace(/(UTC)?-/g, (x,y) => y ? x : "/") )

在这里,

  • (UTC)?--匹配并捕获组1中的可选UTC,然后匹配-字符
  • (x,y) => y ? x : "/"-如果y(组1)匹配,则放回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

相关问题