I saw a lot of answers for the date problem with Safari and IE for the date, using replace(/-/g, "/") works like a charm for these cases 2022-11-30 17:00 UTC 0200 but encountered an issue when I had other time zone like this one 2022-11-28 21:56 UTC-0500 it would create an invalid date again, for any browser.
So I'm looking for a solution that would replace the "-" not globally but only in the first word eventually.
Thank you
CodePudding user response:
What about that?
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)
CodePudding user response:
You can optionally capture UTC before - and if it is captured, put back the whole match, else, replace - with /:
const text = "2022-11-28 21:56 UTC-0500";
console.log( text.replace(/(UTC)?-/g, (x,y) => y ? x : "/") )
Here,
(UTC)?-- matches and captures an optionalUTCin Group 1 and then matches a-char(x,y) => y ? x : "/"- ify(Group 1) was matched, put backx(the whole match), else, put/instead of-.
A lookbehind version:
const text = "2022-11-28 21:56 UTC-0500";
console.log( text.replace(/(?<!UTC)-/g, "/") )
// => 2022/11/28 21:56 UTC-0500
(?<!UTC)- matches a - that is not immediately preceded with UTC.
