我有一个像这样的网址
for-sale/stuff/state/used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html在我的函数中,我尝试使用这个regex验证格式。
if (preg_match('/(?:^|(?:\-))(\w+)/g', $pathInfo, $matches)) {
echo $digit = $matches[0];
}$pathInfo是上面给出的网址。
基本上我想要匹配
for-sale/stuff/used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html文件必须以使用的/new开头,以integer.html结尾验证之后,我想得到is,在本例中是85934
发布于 2015-03-23 10:55:33
发布于 2015-03-23 11:29:03
我建议这段示例代码和以下正则表达式
$re = "~\\bfor\\-sale\\/stuff\\/[^<> ]*?\\/(?:used|new)[^/ ]*?\\-(\\d+)\\.html\\b~";
$str = "<a href=\"for-sale/stuff/state/used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html\"></a>\n<a href=\"for-sale/stuff/state/new-bla-bla2-bla3-bla4-(bla1)-f90-12344.html\"></a>";
preg_match_all($re, $str, $matches);Regex:\bfor\-sale\/stuff\/[^<> ]*?\/(?:used|new)[^/ ]*?\-(\d+)\.html\b
我假设您有几个URL要在一个可变的文本字符串中进行验证,因此我使用了\b,并且URL位于某个标记中,因此我会使用[^<> ]*?来将捕获限制在标记内。
ID将位于第一个捕获组中(由\d+捕获)。空格也是不允许的:[^<> ]*?,^/ *?
https://stackoverflow.com/questions/29208399
复制相似问题