使用正则表达式删除前导和尾随斜杠的问题

时间:2014-10-09 04:19:22

标签: regex preg-replace

我正在尝试使用以下代码

从字符串中删除前导和尾随斜杠
preg_replace('/^(\/)$/', '', '/tiger-cat/');

输出不是预期的,但是当我从正则表达式中删除$时删除前导斜杠,并且当我删除^时类似地尾随斜杠,当它组合在一起时它没有按预期工作。正则表达式出了什么问题?

3 个答案:

答案 0 :(得分:2)

^\/|\/$

试试这个。替换为``。 ^(\/)$你的正则表达式实质上是搜索/这样的字符串,除了/之外什么都没有。见演示。

http://regex101.com/r/hQ1rP0/88

答案 1 :(得分:2)

要执行此操作,您需要使用替换,意味着在字符串的开头^/或结尾/$处匹配。

preg_replace('~^/|/$~', '', '/tiger-cat/');

但是当你可以这样做时,这对于给定的字符串是没有意义的:

str_replace('/', '', '/tiger-cat/');

答案 2 :(得分:2)

您需要使用替换(|)来编码&#34的含义;在开头匹配斜杠或在末尾匹配斜杠":

echo preg_replace('/^\/|\/$/', '', '/tiger-cat/');

但是使用trim更简单:

echo trim('/tiger-cat/', '/');