我有一个像这样的字符串 "%d-%m-%Y" ,这些术语中的任何一个都可以是任何顺序,破折号可以是另一个字符串(%x)。我想得到结果: "%d %m %Y" 。我烘焙了一个简单的正则表达式,如果我将条款设为可选,它就无法正常工作:(在 chrome 控制台中执行此操作:)
"%d-%m-%Y HH:%i".replace(/.*?((%Y|%m|%d)?.*?(%Y|%m|%d)?.*?(%Y|%m|%d)?).*/, "$1 $2 $3 $4")
我有这个 (%Y|%m|%d)?作为可选的 3 次 .*? (非贪婪的东西)他们之间。
如果我运行上面的代码行,输出是:
"%d %d "
如果我从 (%Y|%m|%d) 中删除可选标记?然后表达式按预期工作。我需要这些条款是可选的。有人可以向我解释可选标记发生了什么,这种类型的正则表达式可以完成吗?