Regex 正则表达式匹配2条件

Regex 正则表达式匹配2条件,regex,Regex,目前,我正在WordPress插件上使用这个名为redirection的2正则表达式来过滤某些被记录的URL (食物)匹配URL中任何包含食物词的内容 (.js)|(.css))$以匹配URL末尾的任何.js或.css 如何将这2个正则表达式与和组合成1,以便获得下面的预期输出 预期输出: https://example.com/food/test/apple.css - match https://example.com/food/fruit/pineapple.css - match htt

目前,我正在WordPress插件上使用这个名为redirection的2正则表达式来过滤某些被记录的URL

(食物)匹配URL中任何包含食物词的内容

(.js)|(.css))$以匹配URL末尾的任何.js或.css

如何将这2个正则表达式与和组合成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
我已经试了好几个小时了,但还是不能成功。我不擅长正则表达式。我如何使它与(食物)和((.js)|(.css))一起工作$

我在下面尝试了这个组合,但失败了。请帮帮我。提前谢谢

(food)&((.js)|(.css))$ 
(food)+((.js)|(.css))$ 
(food)/((.js)|(.css))$ 
你可以用

'~.*food.*\.(?:js|css)$~'

如果
/food/
必须在那里使用

'~.*/food/.*\.(?:js|css)$~'
如果只是测试匹配项,请删除第一个
*

详细信息

  • *
    -0+字符,尽可能多
  • 食品
    -文字子字符串
  • *
    -0+字符,尽可能多
  • \(?:js | css)
    -
    后跟
    js
    css
  • $
    -字符串结尾

要在url中的任何位置匹配单词food,并确保.css或.js位于末尾,您可以使用以下方法加入它们:

^https?://.*食品。*\(?:css|js)$

使用这种方法将是:

“~^https?://.*食品。*\(?:css|js)$~”

解释

  • ^
    断言字符串的开头
  • https?://
    将http与可选的s匹配,然后
    ://
  • *食物。*
    匹配任何字符零次或多次,然后匹配食物,然后再匹配任何字符零次或多次
  • \(?:css|js)$
    匹配一个点,后跟一个与css或js匹配的非捕获组,并断言字符串的结尾

这在正则表达式测试仪上非常有效。但不幸的是,它在我的WordPress插件上不起作用。@Null您必须使用除正斜杠以外的分隔符,例如
~
。我已经在我的回答中添加了这一点。如果URL不在字符串的开头,则可以省略
^
锚定。从http开始