请教正则匹配过长该如何解决?

$a='a/b/11111/';
$b='a/b/11111/c/d/e/f';
正在做一个路由的匹配发现写的正则能把a和b都能进行匹配,请教如何只匹配a不能匹配b?
(1111可能是数字也可能是字符串)
代码

preg_match_all('/a\/b\/([\w]+)/', $a, $match,PREG_SET_ORDER);

$c = 'a-111-222.html';
$d = 'a-111-222.html/123/123/123/12/3';

正则:
/a-([\w]+)-([\w]+).html/

也是能同时匹配$c和$d,预期是只能匹配$c不能匹配$d。

谢谢


回答:

如果你的期望的匹配都是一个完整的字符串,那么可以用 ^$ 匹配首尾即可:
第一个:
/^a\/b\/(\w+)\/$/
第二个:
/^a-(\w+)-(\w+).html$/

PS: 你的 \w的外面的 [] 在你目前的场景下是多余的

以上是 请教正则匹配过长该如何解决? 的全部内容, 来源链接: utcz.com/p/944823.html

回到顶部