【问题标题】:Regex to remove year from a string PHP正则表达式从字符串 PHP 中删除年份
【发布时间】:2011-05-20 14:14:52
【问题描述】:

我创建了一个香烟和交易卡数据库。每个集合标题都有与之相关的年份。例如,19432011。年份总是 4 个字符长,但可以是字符串中的任何位置。

有人可以帮我创建一个正则表达式,它会在字符串中找到年份。我试过'/d{4}\b/',但失败了。

【问题讨论】:

  • 我尝试了 '/d{4}\b/' 但由于某些原因失败了
  • 您在d 前面忘记了\ 。其余的正则表达式应该没问题。因此'/\d{4}\b/'

标签: php regex string


【解决方案1】:
(19|20)[0-9][0-9]

这将仅读取 1900 年和 2000 年的范围日期。

【讨论】:

  • 可惜你的cmets只是粗鲁和不具建设性。
  • 怎么样,在regexpal.com 上输入时,它选择了 1943 年和 2011 年。他没有说明他想要多个日期,所以这将选择第一个匹配的正则表达式 4 字符日期。
  • 我不能说对不起。我错了。我必须对您的问题进行小幅编辑(添加句号)才能解锁我的反对票并将其调高。对不起。显然我对糟糕的正则表达式问题比我想象的更生气。
  • 短一点的 (19|20)\d{2}
  • 一个工作示例:$stringNoYear = preg_match("/(19|20)[0-9][0-9]/",$stringWithYear) ;
【解决方案2】:

试试这个:

/\b\d{4}\b/

它将匹配嵌入非单词的 4 位数字

【讨论】:

    【解决方案3】:

    d{4}\b 将匹配单词边界处的四个d。您忘记了字符类中的反斜杠:应该是\d{4}\b。根据输入数据,您可能还需要考虑在开头添加另一个单词边界 (\b)。

    【讨论】:

    • 这会同时提取 4 个数字,但也可能会提取 6537,这不是我想要的。不过还是谢谢。
    【解决方案4】:

    这是一个完整的解决方案:

    $stringWithYear = '1990 New York Marathon';
    $stringNoYear = preg_replace('/(19|20)[0-9][0-9]/', '', $stringWithYear);
    echo trim($stringNoYear);  // outputs 'New York Marathon'
    

    【讨论】:

      【解决方案5】:

      这也有效.. preg_match("/^1[0-9]{3}$/",$value))

      仅从 1 开始检查年份。您可以根据需要更改..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-21
        • 2019-01-10
        • 2021-01-17
        • 2014-06-20
        • 1970-01-01
        • 1970-01-01
        • 2022-06-28
        • 2021-09-07
        相关资源
        最近更新 更多