这是什么样的正则表达式?
匹配字符串
- NOT(以.php结尾或以.html结尾或包含/)
谢谢!
编辑:我需要NOT部分,因为表达式将用于Apache mod重写,因为我无法更改mod _rewrite的逻辑以避免NOT.
编辑:我最初的努力是([^ /] +)(.html)$(^.php)$ - 这是怪异的错误
Pet*_*ton 12
根据这个文档,Apache mod_rewrite 确实支持否定.
在mod_rewrite中,NOT字符('!')也可用作可能的模式前缀.这使您可以否定模式; 例如:``如果当前URL与此模式不匹配''.这可以用于特殊情况,更容易匹配负面模式,或作为最后一个默认规则.
所以你应该能够做到这样的事情:
!^(.*?/.*|.*?\.(?:php|html)$)$
Run Code Online (Sandbox Code Playgroud)
这应匹配任何不包含/并且不以.php或.html结尾的内容
在正则表达式中进行正向匹配要比对负匹配容易得多。尝试搜索ends in .php OR ends in .html OR contains /并逆转程序中的逻辑。
对于严格的正则表达式,没有一种通用的方法可以否定给定的表达式。使用PCRE,您可以拥有否定前瞻的优势,它以性能为代价极大地简化了构造求反搜索的过程。
^([^/]*\.(?!html$|php$)[^./]*)|[^/.]$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36558 次 |
| 最近记录: |