[英]Simple regex question (php)
我一直在路由文件中使用此行:
$route['^(?!home|members).*'] = "pages/view/$0";
我正在嘗試找出表達式左側數組中的字符串( ^(?!home|members).*
)。
基本上任何不是以下網址:
/home
或/home/
或/members
或/members/
應該為true。 我的問題是網址是否類似於/home-asdf
。 這被視為在我的排除URL列表中(在我的示例中僅包含“ home”和“ members”)。
有關如何解決此問題的想法?
試試這個修改:
^(?!(home|members)([/?]|$)).*
這種過濾掉開頭的網址, home
或members
只有在這些名字后面緊跟一個斜杠或問號( [/?]
),或字符串(結束$
)。
http://www.regular-expressions.info/
點.
運算符匹配所有字符。 *
運算符表示先前的模式將重復0次或更多次。 這意味着您的路線的末尾會在單詞“ home”或“ members”之后多次匹配任何字符。 如果只想匹配一個或零個斜杠,則將.*
更改為/?
。
順便說一句,我一直在使用它,它的工作原理很奇妙: http : //www.rubular.com/它主要用於紅寶石,但是在為php等通用正則表達式工作時也能很好地工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.