正则表达式匹配除列表以外的所有子路径但不匹配基本路径
Regex to match all subpaths except a list but not the base path
我正在尝试编写一个正则表达式来匹配给定路径下的所有子路径,但有少数例外。
正则表达式:
^\/my-page\/(?!.*foo|bar|baz).*
预期行为:
/my-page/thing1
- 匹配!
/my-page/another-thing
- 匹配!
/my-page/foo
- 不匹配
/my-page/bar
- 不匹配
/my-page/baz
- 不匹配
这按预期工作了 ✅
问题:
基本路径也匹配:
/my-page/
- 匹配...但我不希望它匹配。 ❌
如何调整正则表达式以防止 /my-page/
也匹配?
您可以使用
^\/my-page\/(?!.*(?:foo|bar|baz)).+
参见regex demo。
详情
^
- 字符串开头
\/my-page\/
- /my-page/
字符串
(?!.*(?:foo|bar|baz))
- 如果在除换行符之外的任何零个或多个字符之后存在 foo
、bar
或 baz
,则匹配失败的否定前瞻尽可能多
.+
- 除换行字符外的一个或多个字符,尽可能多。
我正在尝试编写一个正则表达式来匹配给定路径下的所有子路径,但有少数例外。
正则表达式:
^\/my-page\/(?!.*foo|bar|baz).*
预期行为:
/my-page/thing1
- 匹配!
/my-page/another-thing
- 匹配!
/my-page/foo
- 不匹配
/my-page/bar
- 不匹配
/my-page/baz
- 不匹配
这按预期工作了 ✅
问题:
基本路径也匹配:
/my-page/
- 匹配...但我不希望它匹配。 ❌
如何调整正则表达式以防止 /my-page/
也匹配?
您可以使用
^\/my-page\/(?!.*(?:foo|bar|baz)).+
参见regex demo。
详情
^
- 字符串开头\/my-page\/
-/my-page/
字符串(?!.*(?:foo|bar|baz))
- 如果在除换行符之外的任何零个或多个字符之后存在foo
、bar
或baz
,则匹配失败的否定前瞻尽可能多.+
- 除换行字符外的一个或多个字符,尽可能多。