Попытка придумать процесс в JavaScript, чтобы помочь преобразовать пользовательские форматы дат между различными технологическими стеками, чтобы они все разобрали и отображали все одинаково.RegEx исключить серию из 4 повторяющихся символов, но поймать 2 повторяющихся символа
У меня возникли проблемы придумать хороший RegEx для преобразования,
"dddd, dd/MM/yyyy"
в "dddd, DD/MM/yyyy"
, а также,
"ddd, dd/MM/yyyy"
в "ddd, DD/MM/yyyy"
Я попытался отрицательный предпросмотр и знаю, что я могу сделать что-то вроде (?!d{3,4})
, чтобы исключить набор dddd и ddd. Я знаю, что я также могу сделать d{1,2}
, чтобы поймать dd. Но когда я положил их вместе, а /(?!d{3,4})(d{1,2})/g
также ловит последние два дд внутри дддд и дает мне
"ddDD, DD/MM/yyyy"
я искал вокруг для примеров и был в состоянии изменить один, чтобы получить это выражение RegEx,
/(?=\b|^)(?!d*([d])\1\1\w*)d+(?:\b|$)/g
Это делает то, что мне нужно, но я действительно не понимаю, как он работает с улавливанием первой группы и т. Д. Есть ли способ, который я могу упростить для того, что мне нужно, или есть более простой подход к этому?
Похоже, что вам нужно '/ \ bd {2} \ b/g' - https://regex101.com/r/R0bBvJ/1 –
Не использовать регулярное выражение? Каким образом возникает вопрос о регулярном выражении - вам либо нужна библиотека дат (в зависимости от того, сколько слоев она проходит, хотя некоторые из них будут иметь встроенные), либо вы выполняете простые манипуляции с строками, чтобы изменить порядок элементов даты или вас вообще не делайте этого. Я уверен, что 'dd' и' DD' совершенно разные. Кроме того, просто преобразуйте их в стандартный формат, например ISO 8601, и передайте его. – vlaz