使用通配符验证 URI 路径的正则表达式
Regex to validate URI path with wildcard
我正在尝试使用星号单 (*) 或双星号 (**) 形式的通配符模式验证输入的 URI 路径。例如:/path1/*/path2/
或 /path1/path2/**/path3
我想出了正则表达式 ^(?:\/\w+\/?|\/\*\/?|\/\*\*\/?)+$
,它匹配下面列表中的所有有效路径,除了:/foo*
和 /foo**
并且不匹配无效的,除了一个 /foo//bar
你能否建议一个更好的正则表达式来涵盖所有情况,并且可能比我的更优化。
https://regex101.com/r/U65utY/1
正在考虑像这样的有效路径:
- /foo/bar
- /foo/bar/
- /*
- /foo/*
- /foo/*/bar
- /foo*
- /**
- /foo**
- /foo/**
- /foo/**/bar
和无效路径,例如:
- foo
- foo/bar
- //富
- /foo//酒吧
- /foo/***/bar
- /***
您可以使用
^(?:/(?:\*{1,2}|\w+\*{0,2}))+/?$
详情
^
- 字符串开头
(?:/(?:\*{1,2}|\w+\*{0,2}))+
- 出现一次或多次
/
- 一个 /
字符
(?:\*{1,2}|\w+\*{0,2})
- 备选方案之一:
\*{1,2}|
- 一两个星号,或
\w+\*{0,2}
- 一个或多个单词字符,然后是零、一个或两个星号
/?
- 一个可选的 /
$
- 字符串结尾。
我正在尝试使用星号单 (*) 或双星号 (**) 形式的通配符模式验证输入的 URI 路径。例如:/path1/*/path2/
或 /path1/path2/**/path3
我想出了正则表达式 ^(?:\/\w+\/?|\/\*\/?|\/\*\*\/?)+$
,它匹配下面列表中的所有有效路径,除了:/foo*
和 /foo**
并且不匹配无效的,除了一个 /foo//bar
你能否建议一个更好的正则表达式来涵盖所有情况,并且可能比我的更优化。
https://regex101.com/r/U65utY/1
正在考虑像这样的有效路径:
- /foo/bar
- /foo/bar/
- /*
- /foo/*
- /foo/*/bar
- /foo*
- /**
- /foo**
- /foo/**
- /foo/**/bar
和无效路径,例如:
- foo
- foo/bar
- //富
- /foo//酒吧
- /foo/***/bar
- /***
您可以使用
^(?:/(?:\*{1,2}|\w+\*{0,2}))+/?$
详情
^
- 字符串开头(?:/(?:\*{1,2}|\w+\*{0,2}))+
- 出现一次或多次/
- 一个/
字符(?:\*{1,2}|\w+\*{0,2})
- 备选方案之一:\*{1,2}|
- 一两个星号,或\w+\*{0,2}
- 一个或多个单词字符,然后是零、一个或两个星号
/?
- 一个可选的/
$
- 字符串结尾。