我有一个正则表达式:

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

查询参数:

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

如何将"gl"设置为可选?

推荐答案

您可以使用

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

请看regex demo.

Details:

  • ^-字符串的开始
  • http-固定的http字符串
  • s?-可选s个字符
  • :path\?id=-固定:path?id=字符串
  • ([^&]+)-组1:&个字符以外的一个或多个字符
  • (?:.*?(?:&gl=([^&\s]+).*)?)? - an optional sequence of
    • .*?-除换行符之外的任何零个或多个字符应尽可能少
    • (?:&gl=([^&\s]+).*)? - an optional sequence of
      • &gl=-固定字符串
      • ([^&\s]+)-组2:除空格和&之外的一个或多个字符
      • .*-除换行符之外的任何零个或多个字符,尽可能多
  • $-字符串末尾.

Javascript相关问答推荐

如何使用React渲染器放置根dis?

布局样式在刷新时不持续

判断表格单元格中是否存在文本框

为什么当我解析一个promise时,输出处于挂起状态?

函数返回与输入对象具有相同键的对象

在Three JS中看不到补间不透明度更改效果

如何将react—flanet map添加到remixjs应用程序

Prisma具有至少一个值的多对多关系

如何避免页面第一次加载时由于CSS样式通过JavaScript更改而出现闪烁

JQuery Click事件不适用于动态创建的按钮

将数组扩展到对象中

如何在DYGRAPS中更改鼠标事件和键盘输入

触发异步函数后不能显示数据

将基元传递给THEN处理程序

处理app.param()中的多个参数

无法设置RazorPay订阅API项目价格

将Auth0用户对象存储在nextjs类型脚本的Reaction上下文中

为什么我的Navbar.css没有显示在本地主机页面上?

谷歌饼图3D切片

如何在Reaction中设置缺省值, Select 下拉列表,动态追加剩余值?