Почему регулярное выражение не допускает алфавиты? - PullRequest
0 голосов
/ 24 марта 2019

Я использую это, чтобы ограничить пользователя от ввода чисел.Я хочу, чтобы он вводил только алфавиты, такие как a, b, c, d, e и т. Д.

, но это работает противоположно.

  <input type="text" id="name" name="name" oninput="this.value = this.value.replace(/[A-Za-z]*/, '');" class="form-control" placeholder="Your name" required>

Ответы [ 3 ]

0 голосов
/ 24 марта 2019

Вы пробовали что-то вроде

this.value.replace(/[^A-Za-z]*/, '')

?

0 голосов
/ 24 марта 2019

Я бы порекомендовал использовать вместо HTML5 pattern атрибут и пометить недопустимые поля с помощью соответствующего :invalid CSS-модификатора.

Разница в том, чтоПользователь может ввести цифры, но не сможет отправить форму.Таким образом он / она знает, что не так, и может исправить свою ошибку.

Демо:

input:invalid {border: 2px solid red;}
<form>
  <input type="text" id="name" name="name" placeholder="Your name" pattern="[^\d]+" required>
  <input type="submit" />
</form>

Вы также можете добавить пользовательское сообщение проверки:

document.addEventListener('DOMContentLoaded', function() {
  document.querySelectorAll('[data-invalid]').forEach(function (input) {
    input.addEventListener('invalid', function () { 
      input.setCustomValidity(input.dataset.invalid); 
    });
    input.addEventListener('input', function () {
      input.setCustomValidity(''); 
    })
  });
});
input:invalid {border: 2px solid red;}
<form>
  <input type="text" id="name" name="name" placeholder="Your name" pattern="[^\d]+" data-invalid="Your name cannot contain numbers!" required>
  <input type="submit" />
</form>
0 голосов
/ 24 марта 2019

Использование /[0-9]/, ''

 <input type="text" id="name" name="name" oninput="this.value = this.value.replace(/[0-9]/, '');" class="form-control" placeholder="Your name" required>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...