如何捕获可选模式之间的任何模式组



在Javascript中使用Regex,在任意模式之后,在字符串末尾匹配可选模式的最佳方法是什么?当可选模式出现在字符串末尾和任意模式之后时,有没有办法使其具有包容性?

我的Regex:

'{any:any}'.match(/{?(.+):(.+)}?/);

当前结果:

['{any:any}', 'any', 'any}', index: 0, input: '{any:any}', groups: undefined]

预期结果:

['{any:any}', 'any', 'any', index: 0, input: '{any:any}', groups: undefined]

如果你想保持卷曲的可选,你可以使用两个捕获组与一个否定的字符类组合:

{?([^{}:]+):([^{}:]+)}?

Regex演示

console.log('{any:any}'.match(/{?([^{}:]+):([^{}:]+)}?/));

如果你不想跨越换行符,你可以排除它们:

{?([^{}:n]+):([^{}:n]+)}?

相关内容

最新更新