【发布时间】:2014-10-09 04:19:21
【问题描述】:
我正在尝试使用以下代码从字符串中删除前导和尾随斜杠,
preg_replace('/^(\/)$/', '', '/tiger-cat/');
输出不如预期,但是当我从正则表达式中删除 $ 时,它会删除前导斜杠,当我删除 ^ 时,它会删除前导斜杠,当组合在一起时,它不会按预期工作。正则表达式出了什么问题?
【问题讨论】:
标签: regex preg-replace
我正在尝试使用以下代码从字符串中删除前导和尾随斜杠,
preg_replace('/^(\/)$/', '', '/tiger-cat/');
输出不如预期,但是当我从正则表达式中删除 $ 时,它会删除前导斜杠,当我删除 ^ 时,它会删除前导斜杠,当组合在一起时,它不会按预期工作。正则表达式出了什么问题?
【问题讨论】:
标签: regex preg-replace
你需要使用alternation(|)来编码“匹配开头的斜线或匹配结尾的斜线”的含义:
echo preg_replace('/^\/|\/$/', '', '/tiger-cat/');
但使用trim 更简单:
echo trim('/tiger-cat/', '/');
【讨论】:
为此,您需要使用交替,即匹配字符串开头的^/ 或结尾的/$。
preg_replace('~^/|/$~', '', '/tiger-cat/');
但这对给定的字符串没有意义,当你可以这样做时:
str_replace('/', '', '/tiger-cat/');
【讨论】:
^\/|\/$
试试这个。替换为``。 ^(\/)$ 你的正则表达式本质上是搜索像 / 这样的字符串,除了 / 从头到尾什么都没有。见演示。
【讨论】: