3

我想通过 javascript 正则表达式匹配看起来像这样的 URI(包括路径和 UUID):

/account/0006a8a6-b301-4168-b7de-964773a1ec66

我最接近的正则表达式是这样的:

^\/([a-zA-Z0-9_\.~-]+)\/([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})

可以很好地捕获上述内容 - 我得到一个匹配项,它捕获为两组。

但是,如果我将其作为 URI 输入:

/account/0006a8a6-b301-4168-b7de-964773a1ec66DSSSSSS

正则表达式仍然匹配并捕获两个组,第二个匹配仍然只是 UUID,但我需要它实际上使匹配失败并且由于末尾附加的 DSSSSS 而不能捕获任何内容。我怎样才能改变我的正则表达式来完成这个?

4

2 回答 2

3

您忘记添加行尾锚点 $

^\/([a-zA-Z0-9_\.~-]+)\/([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$
于 2012-09-13T18:09:31.760 回答
2

我看到您正在使用行首锚 (^)。尝试使用结束线锚 ($)。

^/([a-zA-Z0-9_.~-]+)/([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$
于 2012-09-13T18:11:43.387 回答