I have the following regex which does not allow certain special characters:
if (testString.match(/[`~,.<>;\':\"\\/\\[\\]\\|{}()-=_+]/)){
alert(
You've got a character range in there: )-=
which includes all ASCII characters between )
and =
(including numbers). Move the -
to the end of the class or escape it:
/[`~,.<>;':"\/\[\]\|{}()=_+-]/
Also, you don't need to escape all of those characters:
/[`~,.<>;':"/[\]|{}()=_+-]/
Note that in your case, it is probably enough for you, to use test
instead of match
:
if (/[`~,.<>;':"/[\]|{}()=_+-]/.test(testString))){
...
test
returns a boolean (which is all you need), while match
returns an array with all capturing groups (which you are discarding anyway).
Note that, as Daren Thomas points out in a comment, you should rather decide which characters you want to allow. Because the current approach doesn't take care of all sorts of weird Unicode characters, while complaining about some fairly standard ones like _
. To create a whitelist, you can simply invert both the character class and the condition:
if (!/[^a-zA-Z0-9]/.test(testString)) {
...
And include all the characters you do want to allow.