Problem solved. I created three different HTML input to retrieve the value from each one individually for the month, day, and year.
<p>
<label for="expire_date" class="label">Expiry Date:</label>
<input type="text" name="month" size="1" maxlength="2" id="expire" value="<?php if(isset($_POST['month'])) echo $_POST['month']; ?>" /> /
<input type="text" name="day" size="1" maxlength="2" id="expire" value="<?php if(isset($_POST['day'])) echo $_POST['day']; ?>" /> /
<input type="text" name="year" size="2" maxlength="4" id="expire" value="<?php if(isset($_POST['year'])) echo $_POST['year']; ?>" /> mm/dd/yyyy
</p>
Now after retrieving the value from each HTML input, it get store into each variable individually.
}elseif($_POST['place'] == 'onetime' && !empty($_POST['month']) && !empty($_POST['day']) && !empty($_POST['year']) ){
$m = $_POST['month'];
$d = $_POST['day'];
$y = $_POST['year'];
$exp = $y .'-' . $m .'-'. $d ;
}
if(empty($_POST['month']) && empty($_POST['day']) && empty($_POST['year']) ){
$errors[] ="<p class='error'>Please enter the date fo this event.</p>";
}elseif(!empty($_POST['month']) && !preg_match('/^([\d]{2})$/', $_POST['month']) || !empty($_POST['day']) && !preg_match('/^([\d]{2})$/', $_POST['day']) || !empty($_POST['year']) && !preg_match('/^([\d]{4})$/', $_POST['year']) ){
$errors[] = "<p class='error'>Please enter the date in a valid format, e.g. (5/10/2015).</p>";
}
This is just part of my code, but so far i getting the result that i want. As you can see the variable $exp get the value from $m, $d, $y. Another point is that it get validated trough PCRE and beside the PCRE validation the HTML input maxlength allow me to dictate how many characters i allow. So i have to agree with antonio conte about using the three HTML input. Thanks all you guys for your help.