【发布时间】:2013-03-06 10:16:49
【问题描述】:
我正在尝试在 PHP 中编写一个正则表达式,它可以匹配任何包含“search/site/*”的字符串,但前提是它不包含字符串“ss_language”
这是我目前所拥有的:http://regexr.com?3416i 这成功匹配任何“搜索/站点/*”,包括“搜索/站点”,所以现在我需要排除任何包含“ss_language”的字符串的位
考虑到这一点,我似乎可以嵌套另一个 preg_match 来查找 ss_language,但与单个正则表达式相比,这是最好的方法吗?这甚至可以用一个正则表达式来实现吗?以下是一些示例以及它们应返回的内容:
- 通过 - 搜索/站点
- 通过 - 搜索/站点/猫
- 通过 - search/site/dog?f[0]=im_field_technology%3A20858
- 通过 - search/site/cat%20dog?f[0]=im_field_technology%3A20858
- 失败 - search/site/cat%20dog?f[0]=ss_language%3Aen
- 失败 - 搜索/站点/?f[0]=im_field_technology%3A20858&f[1]=ss_language%3Aen
- 失败 - 搜索/站点/?f[1]=ss_language%3Aen&f[0]=im_field_technology%3A20858
- 通过 - 搜索/站点/?f[0]=im_field_technology%3A20858&f[1]=im_field_technology%3A20875o
- 失败 - 节点/23/编辑
提前感谢您的帮助。我对这些很陌生。这是一次失败的尝试:http://regexr.com?3416f
【问题讨论】:
-
什么是
search/site/cat%20dog?f[0]=ss_langu%61ge- 通过还是失败? -
您不需要正则表达式来完成此操作,请参阅下面的示例,使用简单的
strpos()检查。
标签: php regex preg-match