正则表达式捕获以UUID结尾而不是其他任何内容的URI

时间:2012-09-13 18:07:13

标签: regex

我想通过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而没有捕获任何内容。我怎样才能改变我的正则表达式来实现这个目标?

2 个答案:

答案 0 :(得分: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})$

答案 1 :(得分: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})$