如何用preg_replace删除4digitnumber / 2digitnumber?

时间:2018-01-08 12:01:28

标签: php

如何使用preg_replace删除4digitnumber / 2digitnumber?

我试试这段代码:

<?
$data1 = 2018/01;
$data2 = preg_replace('%\/\d{4}\/\d{2}\/%', '', $data1);
echo $data2;
?>

2 个答案:

答案 0 :(得分:1)

您可以在此处执行许多regexeasiest一个是清除/之外的所有内容:

<?php
    $data1 = '2018/01';
    $data2 = preg_replace('/[^\/]+/', '', $data1);

    echo $data2;
    // prints '/'
?>

如果您always have 4 digits before /two digits after,您还可以regex list

<?php
    $data1 = '2018/01';
    $regexList = array('/^[\d]{4}/', '/[\d]{2}$/');

    $data2 = preg_replace($regexList, '', $data1);

    echo $data2;
    // prints  '/'
?>

这里是whole regex list will be exected。第一个列表元素是字符串前半部分的regex,后半部分是第二个。

^匹配字符串的开头(除非它在[ ]内,然后它是一个char否定),而$匹配结束。

如果您希望在to delete any amount of digits之前和之后/执行此操作:

<?php
    $data1 = '206789678918/0179679';
    $regexList = array('/^[\d]*/', '/[\d]*$/');

    $data2 = preg_replace($regexList, '', $data1);

    echo $data2;
    // prints  '/'
?>

*标识符与元素0 or more匹配。如果您希望/之前或之后至少有一个号码出现,那么您可以使用匹配+元素的at least one

答案 1 :(得分:0)

我已经编辑了你的代码。问题是你的正则表达式正在寻找 / 1234/12 / 而不是1234/12 (其中1234可以是任何4位数字,12可以是任何2位数字。)

并且您的$data1变量应为字符串

$data1 = '1232018/01abc';
$data2 = preg_replace('/\d{4}\/\d{2}/', '', $data1);
echo $data2;