初学者regexp案例,简单匹配

时间:2012-06-22 09:06:09

标签: php regex

我想创建一个适用于:

的pregmatch模式
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现在你看到了,我真的很努力,我可以回来吗?如果没有,我理解

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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');

答案 2 :(得分:-1)

我想说问题是.*匹配你想要匹配两个*的所有字符。

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

应该这样做......

编辑:将自己扩展到标记下来的人。

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

  

文本

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

我做到了。你怎么能让我理解英语?

但是为了满足提问者的要求他确实意味着任何字符和app和admin之间的任何数量的字符都是修正版本:

/^http:\/\/site.local\/app\/.*\\/admin$/