我需要使用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}$(.*)
当我在末尾添加一个字符时,该字符不再匹配。
也许有人可以帮助我。谢谢!
答案 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
来匹配您的令牌。