JQuery - удалить символы, не соответствующие regEx - PullRequest
3 голосов
/ 10 января 2011

Я пытаюсь использовать jquery для проверки форм.

Это шаблон, который разрешен в текстовом поле для пользователя.

var pattern = /^[a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g;

Если пользователь вводит что-то другоечем это, то это должно быть заменено на "".

$(document).ready(function() {
  $('#iBox').blur(function() {
     var jVal = $('#iBox').val();
  if(jVal.match(pattern)) {
   alert("Valid");
  } else {
   alert("New "+jVal.replace(!(pattern),""));
                }
    });
  });
});

Но функция замены не работает таким образом.

1 Ответ

5 голосов
/ 10 января 2011

Используйте отрицательный класс символов , написав ^ сразу после открывающей квадратной скобки:

/[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g

Здесь ^ имеет особое значение, которое отличается от обычного значения, которое он имеет в регулярных выражениях (обычно это соответствует началу строки).

Итак, ваш исправленный код будет выглядеть так:

var pattern = /[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g;
// ...
alert("New " + jVal.replace(pattern, ""));

Также обратите внимание, что вызов replace на самом деле не меняет исходную строку - он возвращает измененную копию строки. Если вы хотите изменить значение jVal, вам нужно переназначить его:

jVal = jVal.replace(pattern, "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...