1

我想创建一个适用于的预匹配模式:

http://site.local/app/**/admin

文本。我创造了一些东西,看起来不错,但它也通过了

http://site.local/app/vf/adming

我不想做什么。基本创建的模式:

preg_match('/http:\/\/site.local\/app\/.*\\/admin/', $siteUrl)

应该如何纠正?

顺便说一句:操作员/管理员,我之前创建了这个线程,从那时起该帐户被禁用。https://stackoverflow.com/questions/11139579/i-need-a-regexp现在你看,我真的很努力,我可以拿回那个帐户吗?如果没有,我明白

4

3 回答 3

1

[a-zA-Z]只有字母和{1,5}长度为 1 到 5。如果您允许数字,只需将其更改为[a-zA-Z0-9]

$site = 'http://site.local/app/at/admin';

if(preg_match('/^http:\/\/site.local\/app\/[a-zA-Z]{1,5}\/admin$/', $site)){
    echo 1;
}
于 2012-06-22T09:18:47.520 回答
0

使用 ^ 和 $ 来“告诉”正则表达式模式的开始和结束。

preg_match('/^http:\/\/site.local\/app\/(.*)\/admin$/', 'http://site.local/app/abcd/admin');
preg_match('/^http:\/\/site.local\/app\/(.*)\/admin$/', 'http://site.local/app/abcd/admins');
于 2012-06-22T09:13:02.693 回答
0

我想说的问题是.*匹配所有你真正想要匹配两个 *.

/^http:\/\/site.local\/app\/[\*]{2}\\/admin$/

应该做...

编辑:向标记下的人解释自己。

提问者说他​​想要一个 preg_match 来匹配

文本

http://site.local/app/**/admin

我就是这么做的。你怎么能因为理解英语而给我打分?

但是为了统计提问者,因为他确实是指应用程序和管理员之间的任何字符和任意数量的字符,这里是修改后的版本:

/^http:\/\/site.local\/app\/.*\\/admin$/
于 2012-06-22T09:15:26.147 回答