REGEX表达式:获取句点或斜线后的ID+验证其他单词



如果可能,我想使用REGEX表达式获取图像的id。ID是位于/之后或最后一个点.之后的数字,如下所示:

gallery/image/89
gallery/image/trip-to-ireland.89

但是,即使没有可用的ID,以下内容也应该与REGEX表达式匹配:

图库/图像

图库/图像/

图库/图像/89

图库/图像/89/

画廊/图片/爱尔兰

画廊/图片/爱尔兰/

画廊/图片/爱尔兰之旅。89

画廊/图片/爱尔兰之旅。89/

画廊/image/trip-2-爱尔兰。4589/

请注意,以下不应匹配(要么是因为有许多/,要么是因为没有.(因此它不是真正的id((

'-不应匹配---'

图库/图像//

图库/图片/89//

图库/图像/4m94

图库/图片/94/notok

图库/图像/4m945m6

到目前为止,这是我的规则,但它并不完美。。。

RewriteRule ^gallery/image(?:/[^/]*?([0-9]+))?/?$ gallery/gallery.php?image=$1 [L,QSA]

https://regex101.com/r/88azeh/12

您可以使用

^gallery/image(?:/(?:[^/d]+/?|(?:[^/]*[/.])?(d+)/?)?)?$

请参阅regex演示。

详细信息

  • ^-字符串的开头
  • gallery/image-文字字符串
  • (?:/(?:[^/d]+/?|(?:[^/]*[/.])?(d+)/?)?)?-可选序列:
    • /-一个/字符
    • (?:[^/d]+/?|(?:[^/]*[/.])?(d+)/?)?-可选序列:
      • [^/d]+/?-除/和数字之外的任何一个或多个字符,然后是可选的/
      • |-或
      • (?:[^/]*[/.])?-除了/之外的零个或多个字符的可选序列,尽可能多,直到最后一个/.
      • (d+)-组1:一个或多个数字
      • /?-可选的/字符
  • $—字符串结束

最新更新