如何用正则表达式将日期移到字符串前面?

问题描述 投票:-1回答:2

有关如何使用正则表达式根据ISO ISO861从YYYY-MM-DD中的字符串末尾提取日期的任何建议,并将其移动到字符串的前面并用逗号替换前面字符串中的所有连字符?

EG

“芬兰 - 坦佩雷,2019-03-23” - >“2019-03-23,欧盟,芬兰,坦佩雷”

“US - Virginia - Richmond,2011-02-29” - >“2011-02-29,US,Virginia,Richmond”

regex regex-lookarounds
2个回答
0
投票

只需在()中创建三组搜索包装,然后在替换函数中使用'$ 3 $ 2 $ 1'语法来更改顺序。

第二种情况的天真实施:

const regex = /(US).*- ([a-zA-Z].*) - ([a-zA-Z]*).*(\d{4}-\d{2}-\d{2})/g

const str = 'US - Virgina - Richmond, 2011-02-29';

console.log(str.replace(regex, '$4, $1, $2, $3')) 

// 2011-02-29, US, Virgina, Richmond

你可以找到组here的好解释


0
投票

您没有指定哪种编程语言。在线有许多正则表达式构建器。我链接了一个可能的解决方案,可在regex101.com下面进行测试。

((^(?'COUNTRY'[A-Z]{2})) - )?((?'STATE'([A-Z][a-z]{2,} ?)+) - )((?'CITY'([A-Z][a-z]{2,} ?.*)),).*(?'DATE'(?'YEAR'[0-9]{4})(-(?'MONTH'[0-9]{2})(-(?'DAY'[0-9]{2})))$)

这提供了可以在代码中使用的命名分组。由于国家/地区未出现在两个示例中,因此您可以通过所选的编程语言提供默认值(例如EU)。

https://regex101.com/r/ls7Eg6/2

© www.soinside.com 2019 - 2024. All rights reserved.