也许这个问题已经在这个网站的某个地方得到了回答,但我不确定,因为我不擅长regex。事实上,我想我的问题是非常非常基本的。我需要检查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和一个通配符,该通配符可以是空的,也可以包含数字。
谢谢你,很抱歉我不能解决这个非常基本的问题。
/^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、斜杠、冒号、句点和短划线是否需要转义,因为它们在regex语法中有特殊含义(斜杠是一个常见的分隔符,句点==几乎是任何字符,?
后面的冒号可以解释为条件匹配的一部分,…)file[0-9]*'.html$
:匹配file
和no,或字符串后面的任意数字,因此这将匹配file
、file1
以及file0
或file00000123434
。然后匹配.htm
,$
确保这是您试图匹配的字符串的末尾
就是这样,真的。一个相当生硬的正则表达式。您也可以添加更多的灵活性,例如,允许html和htm作为字符串的末尾,就像表达式允许http和https:'.html?$
一样。还有其他方法可以写同样的东西:'.html{0,1}
:在末尾匹配0或1L。甚至:.[html]{3,4}
,它匹配"group""html":htm,html中的3或4个字符,但也匹配hhh,htth等…
玩它,玩得开心。一旦掌握了的基本知识,Regex就不会那么难了