PHP:preg_replace()破折号预计日期

时间:2015-03-19 20:08:54

标签: php regex

好吧,我得到了以下重写的URL examaples:

/Alfa-Romeo/Brera/06-2006-07-2008/2.4-JTDM-200-PK

这只是一个不错的网址,但要找到我的车辆,我需要以下与我的数据库相对应的值。因此我正在使用此代码。

$value = preg_replace('/(?<!\d{4})-/', ' ', $value);

它将返回以下和斜杠后面我将写下预期值

  1. 阿尔法罗密欧/阿尔法罗密欧
  2. Brera / Brera
  3. 06 2006-07 2008/06 2006-07 2008
  4. 2.4 JTDM 200 PK / 2.4 JTDM 200 PK
  5. 我得到了正确的结果,但是当我进入下一个例子时,出现了什么问题:

    /Alfa-Romeo/Brera/07-2008-/1750-TB-200-PK
    

    退货/预期

    1. 阿尔法罗密欧/阿尔法罗密欧
    2. Brera / Brera
    3. 07 2008- / 07 2008 -
    4. 1750-TB 200 PK / 1750 TB 200 PK
    5. 结果是逻辑,因为我的preg_replace用四个数字后跟一个短划线替换任何一个空格。但在这种情况下,我不希望“1750”背后的划线看到上面的大胆,以及。

      所以我需要扩展这个preg_replace,它只保留日期格式的破折号。一些日期格式是:

      1. 07 2005-08 2010
      2. 2012-2015
      3. 2012 -
      4. 07 2005-2010
      5. 正如你所看到的那样,在划线后有时候什么都没有,有时只有一年,一年零一个月。如何删除“1750”背后的破折号,看看上面的粗体?

1 个答案:

答案 0 :(得分:1)

根据您发布的内容,也许

(?<=\d{4})-(?=[a-zA-Z])|(?<!\d{4})-

Demo