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