pattern
не ограничивает поле вводом только того, что соответствует шаблону, оно просто решает, является ли введенный ввод действительным или нет.Таким образом, вы можете сделать валидатор и информировать пользователя, когда ввод недействителен.Но если вы хотите полностью запретить пользователю вводить что-либо, это один из вариантов:
<input keypress="return String.fromCharCode(event.charCode).match(/[^a-zA-Z0-9]/g) === null">
DEMO: Stackblitz