The backslash \ is the escape character so to include a literal backslash in a regular expression (or string) you must escape the backslash character itself, i.e. \\.
In your character class the single \ is being used to escape the ] to prevent it from being interpreted as the metacharacter which closes the character class.
The other \ in your character class are unnecessary as the ] is the only metacharacter that needs to be escaped within it.
], \, ^ and - are the only characters that may need to be escaped in a character class.
As already mentioned, you may be better to specify what characters are disallowed by looking for characters that are not within a specified group, e.g.
/[^a-z\d\s]/i
which disallows any characters not a-z, A-Z, 0-9 or whitespace (the \d is short for 0-9 and the i means case-insensitive).
Also, in place of the if-else statement and match, you could simply use
return !value.test( /[^a-z\d\s]/i )
although you may find it less readable (the ! inverts the boolean result of the test call).
[0-9a-zA-Z]?