Regex问题字符串必须以特定的方式出现,或者根本不出现



我需要REGEX表达式的帮助(用于分析(。不确定如何处理需求。

以下是一个URL示例:

/a.html?ref=aa&project=11&utm=bb

该URL将在中间有&project=XX,但可能根本不存在&project。。

要求:

  1. 我希望正则表达式仅对特定项目=XX为正(例如,仅当XX等于11、12或13时(,而对所有其他值(项目=22(为负
  2. 其前面的参数(以下示例中的?ref(是必需的
  3. 之后的任何参数(&utm(都是可选的

例如:

  • 罚款:/a.html?ref=aa&项目=11&utm=bb
  • 罚款:/a.html?ref=aa&utm=bb
  • 不好:/a.html?ref=aa&项目=22&utm=bb

我该如何处理?

我试过这个,它有点工作(但只是没有额外的utm参数(:

/a.html?ref=aa(&project=(11|12|13))?$

我试过了,但在使用utm参数时不起作用:

/a.html?ref=aa(&project=(11|12|13))?(&utm=.*)?$

谢谢意大利

您没有说明您使用的平台,但如果您希望它们与大多数平台上的文字字符匹配,则需要转义前斜杠和问号:

/a.html?ref=aa(&project=(11|12|13))?(&utm=.*)?$

您可能还想尽量减少utm块中的捕获,以防后面出现其他您不想要的东西:

/a.html?ref=aa(&project=(11|12|13))?(&utm=.*?)?$

您可以使用字符类[123]将1,2或3与单个可选组进行匹配,并注意转义点以进行字面匹配。

/a.html?ref=aa(&project=1[123])?&utm=.*$

模式匹配:

  • /a.html匹配/a.html
  • ?ref=aa匹配?ref=aa
  • (捕获组
    • &project=1[123]匹配&project=1,然后是1,2或3
  • )?关闭非捕获组使其成为可选组
  • CCD_ 16匹配&utm=后面跟行的其余部分

Regex演示

相关内容

最新更新