0

也许这个问题已经在这个网站的某个地方得到了回答,但我不确定,因为我不擅长正则表达式。事实上,我猜我的问题是非常非常基本的。我需要检查 URL 是否与以下模式匹配:

'http://www.my-domain.com/dir/file.htm'
'http://www.my-domain.com/dir/file2.htm'
'http://www.my-domain.com/dir/file3.htm'

所以基本上,我只需要一个简单的正则表达式模式来匹配带有一个可以为空或包含数字的通配符的 URL。

谢谢你,很抱歉我无法解决这个非常基本的问题。

4

1 回答 1

1

/^https?\:\/\/www\.my\-domain\.com\/dir\/file[0-9]*\.htm$/匹配所有示例字符串:

if (preg_match('/^https?\:\/\/www\.my\-domain\.com\/dir\/file[0-9]*\.htm$/',$url,$matches))
{
    var_dump($matches);
}

由于您不清楚(或不清楚)正则表达式:这就是这个表达式的作用:

  • ^https?: 检查天气是否以 http 开头,并允许一个可选的s
  • \:\/\/www\.my\-domain\.com\/dir\/file: 验证实际的基本 url,斜线、冒号、点和破折号需要转义,因为它们在正则表达式语法中的特殊含义(斜线是常见的分隔符,点 == 几乎任何字符,冒号后面?可以解释为条件的一部分匹配,...)
  • file[0-9]*\.html$: 匹配file和否,或者字符串后面的任意数量的数字,所以这将匹配filefile1以及file0or file00000123434。然后.htm匹配,并$确保这是您尝试匹配的字符串的结尾。

就是这样,真的。一个非常严格的正则表达式。您也可以添加更多的 flex,方法是(例如)允许 html 和 htm 作为字符串的结尾,就像表达式允许 http 和 https: 一样\.html?$。还有其他方法可以编写相同的内容:\.html{0,1}: 匹配最后的 0 或 1 l。甚至:匹配“组”.[html]{3,4} “html”中的 3 个或 4 个字符:htm、html 但也匹配 hhh、htth 等...

玩它,玩得开心。一旦你掌握了基础知识,正则表达式就不那么难了

于 2012-09-10T10:07:18.210 回答