当前,我在此WordPress插件上使用了这2个正则表达式,称为重定向,以过滤掉某些URL,使其不被记录。
(食物),以匹配网址中任何包含食物词的内容。
((。js)|(.css))$ 以匹配URL末尾的任何.js或.css
如何将这2个正则表达式与AND合并为1,这样我可以在下面得到预期的输出?
期望的输出:
https://example.com/food/test/apple.css - match
https://example.com/food/fruit/pineapple.css - match
https://example.com/food/fruit/apple.php - NOT match
https://example.com/food/new/strawberry.js - match
我已经尝试了几个小时,但仍然无法正常工作。我对Regex不好。如何使其与(food)AND((.js)|(.css))$
一起使用我在下面尝试了此组合,但失败了。请帮我。预先感谢。
(food)&((.js)|(.css))$
(food)+((.js)|(.css))$
(food)/((.js)|(.css))$
答案 0 :(得分:1)
您可以使用
'~.*food.*\.(?:js|css)$~'
请参见Map interface。
如果/food/
必须存在,请使用
'~.*/food/.*\.(?:js|css)$~'
如果您只是在测试匹配项,请删除第一个.*
。
详细信息
.*
-最多0个字符,food
-文字子字符串.*
-最多0个字符,\.(?:js|css)
-.
后跟js
或css
$
-字符串结尾答案 1 :(得分:0)
要在网址中的任意位置匹配食物一词,并确保.css或.js位于末尾,则可以使用exists将它们加入:
^https?://.*food.*\.(?:css|js)$
使用alternation将是:
'~^https?://.*food.*\.(?:css|js)$~'
说明
^
断言字符串的开头https?://
将http与可选的s匹配,然后://
.*food.*
匹配任意字符零次或多次,然后匹配食物,然后匹配零次或更多次的任意字符\.(?:css|js)$
匹配一个点,然后匹配一个与css或js匹配的非捕获组,并断言字符串的结尾