Используя Regex, я хочу сохранить некоторые специальные символы, но удалить другие (вертикальная черта) - PullRequest
1 голос
/ 12 марта 2020

Я пытаюсь исключить вертикальную черту '|' из моего поля ввода под названием Комментарии, хотя я все еще хочу сохранить пунктуацию как 1001 *. :; - Я застрял на том, как сохранить некоторые специальные символы, но удалить другие. В отличие от Regular Expression, мы надеемся, что некоторые свободные sh глаза помогут.

Это то, что я получил до сих пор;

$('#comments').keydown(function (e) {

  var k = String.fromCharCode(e.which);

  if (k.match(/[^a-z A-Z0-9\x08]/g))
    e.preventDefault();
});

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Следующий код работает. Я понятия не имею, почему код для символа канала 220, а не 124, но вы go!

var $comments = $('#comments');

var pipeKeycode = 220; // I cannot figure out why

$comments.on('keydown', function(e) {
  if (e.which === pipeKeycode) {
    e.preventDefault();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>Comments: <input id="comments"></label>
0 голосов
/ 13 марта 2020

Чтобы запретить пользователю вводить |. Я не запрещаю пользователю вставлять строку с |, но после того, как пользователь выходит из поля, я удаляю этот символ в blur:

$('#comments').keydown(function (e) {
  if (e.key === '|')
    e.preventDefault();
});
$('#comments').blur(function (e) {
  e.target.value = e.target.value.replace(/\|/g, '');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="comments">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...