我想创建一个适用于:
的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现在你看到了,我真的很努力,我可以回来吗?如果没有,我理解
答案 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$/