Ответ 1
вместо проверки наличия специальных символов, проверьте наличие только допустимых символов
regex: /^[A-Za-z\d=#$%...-]+$/
Замените ...
на все специальные символы, которые вы хотите разрешить. В приведенном выше примере #
, $
, %
и -
будут разрешены. Примечание: вам не нужно скрывать (большинство) символов внутри []
.
Если вы хотите разрешить -
, он должен быть последним символом, иначе regex пытается проанализировать диапазон. (например, [a-c]
соответствует a, b и c. [a-c-]
соответствует a, b, c и -)
Кроме того, если вы хотите разрешить ^
, он не может быть первым символом, иначе regex рассматривает это как своего рода оператор not
. (например, [^abc]
соответствует любому символу, который не является a, b или c)
В приведенном выше примере полное регулярное выражение может выглядеть примерно так:
regex: /^[A-Za-z\s`[email protected]#$%^&*()+={}|;:'",.<>\/?\\-]+$/
Объяснение
NODE EXPLANATION
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
[A-Za- any character of: 'A' to 'Z', 'a' to 'z',
z\s`[email protected]#$%^&*()+={}| whitespace (\n, \r, \t, \f, and " "), '`',
;:'",.<>/?\\-]+ '~', '!', '@', '#', '$', '%', '^', '&',
'*', '(', ')', '+', '=', '{', '}', '|',
';', ':', ''', '"', ',', '.', '<', '>',
'/', '?', '\\', '-' (1 or more times
(matching the most amount possible))
--------------------------------------------------------------------------------
$ before an optional \n, and the end of the
string