Мне нужно проверить текстовое поле с помощью плагина jQuery Validate, для этого я использую регулярное выражение и добавляю метод в плагин:
$.validator.addMethod(
"regex",
function(value, element, regexp) {
var check = false;
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
},
"No special Characters allowed here. Use only upper and lowercase letters (A through Z; a through z), numbers and punctuation marks (. , : ; ? ' ' \" - = ~ ! @ # $ % ^ & * ( ) _ + / < > { } )"
);
Затем в параметрах I добавить регулярное выражение:
comments:{
required: true,
maxlength: 8000,
regex: /[^A-Za-z\d\-\=\~\!@#\%&\*\(\)_\+\\\/<>\?\{\}\.\$‘\^\+\"\';:,\s]/
}
Это "работает" определенным образом, оно обнаруживает недопустимые символы и отображает сообщение, проблема в том, что оно работает только тогда, когда специальные символы - единственные в поле, например:
| `` ° ¬ // This shows the error message but...
test | // This won't show the message
Итак, если есть один разрешенный символ, проверка просто перестает работать. Я что-то упускаю?
PS Я почти уверен, что это как-то связано с плагином, потому что я тестировал регулярное выражение только с помощью javascript, а он работает хорошо.