Проверьте ввод с регулярным выражением, имеющим определенное условие - PullRequest
0 голосов
/ 15 мая 2019

Я хочу заменить значение ввода для подтверждения имени клиента, имеющего следующее условие

  1. Ввод может принимать альфа-значения
  2. Ввод может принимать только специальный символ, например пробел `'
  3. если есть соседний набор `или пробела, замените его на 1

как у jone 'sfsd => jone sfsd (убрать более поздние специальные символы, так как два соседних не допускаются) джон кет => джон кет (убрать 3 пробела одним)

В настоящее время я могу выполнить дела 1 и 2

мой код

$("#m").keyup(function() {
  var m = $("#m").val();
  m = m.replace(/[^a-z'`\s]/gi, '');
  m = m.replace(/[^\w\s]|(.)\1/gi, '');
  $("#m").val(m);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='text' id='m'>

1 Ответ

0 голосов
/ 15 мая 2019

Измените свою последнюю replace строку на

m = m.replace(/([^a-z])[^a-z]+/gi, '$1');

Это соответствует двум или специальным символам (поскольку все, кроме a-z является допустимым специальным символом, начиная с вашего первого replace), захватывает первый и заменяет совпадение содержимым первого захвата. группа .

$(document).ready(function() {
  $("#m").keyup(function() {
    var m = $("#m").val();
    m = m.replace(/[^a-z'`\s]/gi, '');
    m = m.replace(/([^a-z])[^a-z]+/gi, '$1');
    $("#m").val(m);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='text' id='m'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...