Как проверить, содержит ли ввод какой-либо специальный символ

У меня проблема в том, что поле должно принимать все символы и цифры (английский, арабский и т. д.), кроме специальных символов, таких как

~!@#$%&*.()[]{}‹>^+=:,;?/\'

более конкретно, только специальные символы будут рассматриваться как ошибочные.

У меня есть код ниже,

 var textToMatch='$a$';
 var pattern = /[^~!@#$%&*\[\]\{\}\<\>\^+=:,;?/\\]+$/
 var validationResult = pattern.test(textToMatch);

В этом коде это работает хорошо, когда я помещаю "$$@" или "a$" в переменную textToMatch (результат: (false)invalid, как и ожидалось). Примечание: это работает только в том случае, если последним символом является любой специальный символ.

но не удалось, когда я поместил любой символ (не специальный) в качестве последнего символа в переменную textToMatch (результат: (true) действительный, который не ожидается), скажем, например : "$а".

Я действительно застрял здесь. любая помощь будет высоко оценена.


person Rezoan    schedule 11.02.2014    source источник
comment
Удалите $ с конца шаблона.   -  person devnull    schedule 11.02.2014
comment
@devnull не работает. ввод, который я проверил: $a. если во всем вводе есть какой-либо специальный символ, он должен быть неудачным. это то что мне нужно. кстати он сейчас тоже провалился за $a$   -  person Rezoan    schedule 11.02.2014
comment
Вам также необходимо удалить отрицание в классе символов. /[~!@#$%&*\[\]\{\}\<\>\^+=:,;?/\\]+/ должен работать на вас.   -  person devnull    schedule 11.02.2014
comment
@devnull :( не работает. Теперь символы и цифры обрабатываются как ошибочные и исключаются все специальные символы. Ничего не изменилось.   -  person Rezoan    schedule 11.02.2014


Ответы (1)


Проблема в том, что вы проверяете только конец строки. Вам просто нужно добавить ^ в начале вашего шаблона, поэтому вся строка должна состоять из неспециальных символов.

^[^~!@#$%&*\[\]\{\}\<\>\^+=:,;?/\\]+$
person Nyx    schedule 11.02.2014
comment
@HarveyA.Ramer Не заставляй меня краснеть ;) - person Nyx; 11.02.2014