如何在regex中使查询参数成为可选参数



我有这个正则表达式:

^https?:path?id=([a-zA-Z0-9._]+)&?.*&gl=([^&|n|ts]+)&?.*$

查询参数:

?id=([a-zA-Z0-9._]+)&?.*&gl=([^&|n|ts]+)&?.*$

我如何制作";gl";是可选的吗?

您可以使用

^https?:path?id=([^&]+)(?:.*?(?:&gl=([^&s]+).*)?)?$

请参阅regex演示。

详细信息

  • ^-字符串的开头
  • http-固定的http字符串
  • s?-可选的s字符
  • :path?id=-固定的:path?id=字符串
  • ([^&]+)-组1:除&字符之外的一个或多个字符
  • (?:.*?(?:&gl=([^&s]+).*)?)?-的可选序列
    • .*?-除换行符字符之外的任何零个或多个字符尽可能少
    • (?:&gl=([^&s]+).*)?-的可选序列
      • &gl=-固定字符串
      • ([^&s]+)-组2:除空白和&之外的一个或多个字符
      • .*-除了换行字符之外的任何零个或多个字符,尽可能多
  • $—字符串结束

最新更新