正则表达式特定字符串的任何大写变体

标签 regex iis url-rewriting

我正在尝试捕捉特定字符串 thefolder 是否包含任何大写字符。

http://www.example.com/thefolder = false
http://www.example.com/theDirectory = false
http://www.example.com/theFolder = true
http://www.example.com/ThefolDeR = true
http://www.example.com/THEFOLDER = true

到目前为止,我有以下正则表达式,但它也会为 theDirectory 返回 true,这是不需要的。

(?=.*[A-Z]).+

重要的是要注意,它必须完全匹配特定字符串 thefolder,因为这是用于 IIS 重写,不能影响站点的其余部分。

最佳答案

这可能行得通。使用先行查看 thefolder(长度为 9)是否有
大写字母。如果是,则匹配。

(?=(?i:thefolder))(?![a-z]{9})(.{9})

Formatted:

 (?=
      (?i: thefolder )
 )
 (?! [a-z]{9} )
 ( .{9} )

在最坏的情况下,总是存在排列(没有语法,只有类和交替)。
但是,这总是会导致一个大字符串。

T[hH][eE][fF][oO][lL][dD][eE][rR]|[tT]H[eE][fF][oO][lL][dD ][eE][rR]|[tT][hH]E[fF][oO][lL][dD][eE][rR]|[tT][hH][eE]F[oO][lL] [dD][eE][rR]|[tT][hH][eE][fF]O[lL][dD][eE][rR]|[tT][hH][eE][fF][oO ]L[dD][eE][rR]|[tT][hH][eE][fF][oO][lL]D[eE][rR]|[tT][hH][eE][fF] [oO][lL][dD]E[rR]|[tT][hH][eE][fF][oO][lL][dD][eE]R

   T [hH] [eE] [fF] [oO] [lL] [dD] [eE] [rR] 
|  [tT] H [eE] [fF] [oO] [lL] [dD] [eE] [rR] 
|  [tT] [hH] E [fF] [oO] [lL] [dD] [eE] [rR] 
|  [tT] [hH] [eE] F [oO] [lL] [dD] [eE] [rR] 
|  [tT] [hH] [eE] [fF] O [lL] [dD] [eE] [rR] 
|  [tT] [hH] [eE] [fF] [oO] L [dD] [eE] [rR] 
|  [tT] [hH] [eE] [fF] [oO] [lL] D [eE] [rR] 
|  [tT] [hH] [eE] [fF] [oO] [lL] [dD] E [rR] 
|  [tT] [hH] [eE] [fF] [oO] [lL] [dD] [eE] R

关于正则表达式特定字符串的任何大写变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32000299/

相关文章:

c# - IIS Express 8 - 最大允许长度

apache - 仅当在 RewriteMap 中找到模式时才需要 mod_rewrite 进行重定向

.htaccess - htaccess规则重写.htaccess

.htaccess - 如何重写脚本并使用 .htaccess 重定向离开该脚本,同时避免无限循环

java - 为什么这不是有效的正则表达式

python - 删除分隔文件中的嵌套换行符?

java - 如何匹配 Clojure 中的多行正则表达式来解析 Groovy 源文件?

regex - 最后三个字母匹配字符串 "ces"

.net - 使用 SNI 选项以编程方式在 IIS 8 上添加绑定(bind)

asp.net - ASP.NET Masters:使用Session变量的优点/缺点是什么?