Мне нужно проверить текстовое поле с помощью плагина 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 (. , : ; ? ' ' \" - = ~ ! @ # $ % ^ & * ( ) _ + / < > { } )"
);
Затем в параметрах я добавляю регулярное выражение:
comments:{
required: true,
maxlength: 8000,
regex: /[^A-Za-z\d\-\=\~\[email protected]#\%&\*\(\)_\+\\\/<>\?\{\}\.\$‘\^\+\"\';:,\s]/
}
Это "работает" определенным образом, оно обнаруживает недопустимые символы и отображает сообщение, проблема в том, что он работает только в тех случаях, когда специальные символы являются единственными в поле, например:
| `` ° ¬ // This shows the error message but...
test | // This won't show the message
Итак, если один из символов разрешен, тогда проверка просто перестает работать. Я что-то пропустил?
P.S. Я уверен, что это имеет какое-то отношение к плагину, потому что я тестировал регулярное выражение только с помощью javascript, и он хорошо работает.