什么是开头的感叹号和正则表达式结束时的美元符号?

lva*_*yut 5 regex mean.io

我正在使用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]'

]));
Run Code Online (Sandbox Code Playgroud)

我知道他们试图通过替换任何包含以下内容的网址来重写网址更漂亮:

/api/, _getModules, .html, .js, ..., .pdf
Run Code Online (Sandbox Code Playgroud)

但是,我一直在搜索以了解正则表达式,但仍然无法弄清楚!^在行的开头和行$尾的内容是什么.有人可以一步一步提取正则表达式吗?

Wik*_*żew 5

根据Apache mod_rewrite简介:

在mod_rewrite中,!可以在正则表达式之前使用该字符来否定它.也就是说,只有当字符串与表达式的其余部分不匹配时,才会认为该字符串已匹配.

^$正则表达式锚分别断言在开始和结束字符串的位置.

要了解其余部分,您可以查看正则表达式的含义.

正则表达式本身是:

  • ^ - 断言字符串位置的开始和......
  • /api/.*- 按字面意思匹配/api/,然后在换行符之外添加0个或更多字符
  • | - 要么...
  • \\_getModules - 比赛 _getModules
  • | - 要么
  • \\.html - 比赛 .html
  • |\\.js|\\.css|\\.mp4|\\.swf|\\.jp(e?)g|\\.png|\\.gif|\\.svg|\\.ico|\\.eot|\\.ttf|\\.woff|-或者这些扩展(注意它将匹配jpgjpeg作为?装置匹配0或1个发生前述图案的)
  • \\.pdf$- .pdf在字符串末尾匹配($).