【问题标题】:Issue with removing leading and trailing slash using regex使用正则表达式删除前导和尾随斜杠的问题
【发布时间】:2014-10-09 04:19:21
【问题描述】:

我正在尝试使用以下代码从字符串中删除前导和尾随斜杠,

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

输出不如预期,但是当我从正则表达式中删除 $ 时,它会删除前导斜杠,当我删除 ^ 时,它会删除前导斜杠,当组合在一起时,它不会按预期工作。正则表达式出了什么问题?

【问题讨论】:

    标签: regex preg-replace


    【解决方案1】:

    你需要使用alternation(|)来编码“匹配开头的斜线或匹配结尾的斜线”的含义:

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

    但使用trim 更简单:

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

    【讨论】:

      【解决方案2】:

      为此,您需要使用交替,即匹配字符串开头的^/ 或结尾的/$

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

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

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

      【讨论】:

        【解决方案3】:
        ^\/|\/$
        

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

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

        【讨论】:

          猜你喜欢
          • 2012-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多