我使用Mean.io并在modRewrite函数中看到了一个正则表达式:
app.use(modRewrite([
'!^/api/.*|\\_getModules|\\.html|\\.js|\\.css|\\.mp4|\\.swf|\\.jp(e?)g|\\.png|\\.gif|\\.svg|\\.ico|\\.eot|\\.ttf|\\.woff|\\.pdf$ / [L]'
]));
我知道他们正在尝试通过替换任何包含以下内容的网址来重写网址:
/api/, _getModules, .html, .js, ..., .pdf
但是,我一直在搜索以了解正则表达式,但仍然无法弄清楚该行开头的!^
和结尾处的$
是什么线。有人可以一步一步提取正则表达式吗?
答案 0 :(得分:5)
根据Apache mod_rewrite Introduction:
在mod_rewrite中,可以在正则表达式之前使用
!
字符来否定它。也就是说,只有当字符串与表达式的其余部分不匹配时,才会认为该字符串已匹配。
^
和$
是regex anchors,分别在字符串的开头和结尾处断言。
要了解其余内容,您可以浏览What does the regex mean帖子。
正则表达式本身是:
^
- 断言字符串位置的开始并且...... /api/.*
- 按字面意思匹配/api/
以及除换行符之外的0个或更多字符|
- 或者...... \\_getModules
- 匹配_getModules
|
- 或\\.html
- 匹配.html
|\\.js|\\.css|\\.mp4|\\.swf|\\.jp(e?)g|\\.png|\\.gif|\\.svg|\\.ico|\\.eot|\\.ttf|\\.woff|
- 或这些扩展程序(请注意它将与jpg
和jpeg
匹配,因为?
表示匹配0或1次出现的先前模式 )\\.pdf$
- 在字符串末尾(.pdf
)匹配$
。