我一直在路线文件中使用这一行:
$route['^(?!home|members).*'] = "pages/view/$0";
表达式(^(?!home|members).*
)左侧数组中的字符串是我想要弄清楚的。
基本上任何不是的网址:
/home
或/home/
或/members
或/members/
应为真。我遇到的问题是,如果网址是/home-asdf
。这算在我的被排除网址列表中(在我的例子中只有'home'和'members'。
关于如何解决这个问题的想法?
答案 0 :(得分:1)
尝试此修改:
^(?!(home|members)([/?]|$)).*
这会过滤掉以home
或members
开头的网址,前提是这些名称后面紧跟斜杠或问号([/?]
)或字符串结尾({{ 1}})。
答案 1 :(得分:0)
http://www.regular-expressions.info/
点.
运算符匹配所有字符。 *
运算符表示先前的模式将重复0次或更多次。这意味着你的路线的结尾在单词home或member之后的任何字符都匹配任何字符。如果您只想匹配一个或零斜杠,请将.*
更改为/?
。
答案 2 :(得分:0)
顺便说一句,我一直都在使用它,它可以创造奇迹:http://www.rubular.com/ 它主要用于ruby,但在为php等编制通用正则表达式时效果很好。