Your pattern requires one character of each type, in order. If you want to match all the characters, put them in a single character class, and quantify it with *
pattern="[a-ZA-Z0-9._]*"
solved Check if input field can only consist of lower and uppercase letters, numbers and the characters . and _