Easy RegExp不匹配

时间:2016-11-09 11:49:57

标签: javascript regex

我想匹配这些网址

de-de/checkout/
de-de/checkout/confirm/

使用RegExp。我已经尝试了/(.*)\/checkout\/(|$|confirm\/$)/g,但我只获得了两场比赛

de-de/checkout/
de-de/checkout/

这可能很容易,但我不知道为什么这不起作用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

(.*)\/checkout\/(confirm\/)?

regexr.com中的两场比赛 考虑结帐或确认是一个关键字

答案 1 :(得分:1)

删除替换中的前导let viewInfos = InfosConnectView(connectDetailsItem: self.connectDetailsItem, frame: CGRect(x: 0, y: 9, width: self.view.frame.width, height: 200))

|

Regex将选择无限制的替换组的最短替代方案,并为其提供0长度匹配。
在当前状态下,您的交替意味着“无论是字符串的结尾还是字符串的结尾”或确认/后跟字符串的结尾。

答案 2 :(得分:1)

在我看来,这更容易理解:

(.+?)?\/checkout\/(?:confirm\/)?

虽然我不确定您是否需要简单地匹配网址(真/假)或捕获de-de或您提供的样本之前或之后的任何内容。

confirm被包装到非捕获组中,因为它是可能或可能不会

的唯一路径组件。