How to remove similar characters from an input tag in JS?

I am making a Signup form.

In that, I have a username field that should not allow the characters -, space, ", ' but I can’t get that to happen.

I tried:- Slice method, substring method, regex, remove and split method and join technique.

So code:

function username(event) {
    text = document.getElementById('usname').value;
    key = event.key;
    if (key == ' ' || key == '"' || key == "'" || key == '-') {
        setTimeout(() => {
            let final = text.slice(0, -1);
            document.getElementById('usname').value = final';
        },0.005)
    }
}

This was my best approach was this but it removed two characters at once and if we spam space and then type a character, we get a space in the text which is invalid.

Answer

You can use regular expression [Regex]

This regex will accept only alphabets and numbers , and remove special characters and spaces.

function username(event) {
  text = document.getElementById('usname').value;
  document.getElementById('usname').value = text.replace(/[^a-zA-Z0-9w]/g, "");
}
<input type="text" onkeyup="username()" id="usname" />

EDIT

[^a-zA-Z0-9w] is the same as [^w] or just W. All will allow , so [^a-zA-Z0-9] or [W] would be better. – MikeM

You are right my friend, this much better.

function username(event) {
  text = document.getElementById('usname').value;
  document.getElementById('usname').value = text.replace(/[W_]/g, "");
}
<input type="text" onkeyup="username()" id="usname" />

EDIT

I don’t want other symbols to be removed I just want these:- the dash(-), space, single and double quotes(‘,”). – Shaurya Shrimal

Add the symbols you want to remove in regex /[-'" ]/g

function username(event) {
  text = document.getElementById('usname').value;
  document.getElementById('usname').value = text.replace(/[-'" ]/g, "");
}
<input type="text" onkeyup="username()" id="usname" />