Шаблон выглядит нормально, однако, как уже отмечалось, использование tel типа ввода, вероятно, не очень хорошая идея, так как оно семантически несовместимо.
Вы можете попробовать использовать скрипт вместо того, чтобы полагаться на проверку браузером, так как поддержка неоднозначна.Может подойти что-то вроде следующего.
function validateInput(evt) {
var re = new RegExp(this.pattern);
var s = this.value;
// Show whether value is valid or not when input is full
document.querySelector('#s0').textContent = s.length < 5 || re.test(s)? '' : 'Invalid';
}
window.onload = function(){
document.querySelector('#i0').addEventListener('input',validateInput, false);
};
<input id="i0" type="text" placeholder="MM/YY" pattern="(1[0-2]|0[1-9])\/(1[8-9]|2\d)" maxlength="5"><br>
<span id="s0"></span>