正则表达式以匹配URL中的特定字符串长度

时间:2018-07-27 20:17:35

标签: regex iis url-rewriting

我需要使用regex匹配某个URL,以便在IIS URL重写中进行重定向。

这是url查询(和变体)的外观:

https://example.com/api/GetData/Version/?auth=TTXL9N5XCTCEG3IXF9
https://example.com/api/GetData/Version/?auth=TTXQQ7HWRTCLD3OM67&iid=-1
https://example.com/api/GetData/Version/?t=3&auth=TTXZRKEUROER88HRJ4&iid=-1

现在重要的是,auth参数值必须正好包含18位数字(TTX + 15个其他字符),后跟无字符或类似&...之类的字符。

所以我需要一个能够识别以下内容的正则表达式:

[Anything before]auth=TTX[exactly 15 additional characters][&... after or nothing]

我当前的正则表达式实际上在auth之后没有任何好处,但是并不能令人遗憾地涵盖所有变化:

(.*)auth=\w{18}$(.*)

当我在末尾添加一个字符时,该字符不再匹配。

也许有人可以帮助我。谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想让正则表达式仅匹配包含0-9和A-Z的查询字符串键auth,请使用:

(.*)[?&]auth=TTX[A-Z0-9]{15}(&.*)?

它与任何在查询字符串中具有auth且值为TTX <15characters>的url匹配,然后仅允许查询字符串项。


CertainPerformance在此解决方案的评论中发布:(.*)auth=TTX\w{15}(.*)。这有一个小问题:它允许auth的长度超过TTX + 15个字符。

答案 1 :(得分:1)

(.*)auth=\w{18}(?=&|$) RegExr

  • (.*)auth=\w{18}寻找... auth = [a-zA-Z0-9 _](是_包含在\ w中)
  • (?=&|$)对&或end进行正面预测

提示

考虑使用[A-Z0-9]而不是\w来匹配您的令牌。