为什么正则表达式不允许使用字母?

时间:2019-03-24 11:37:59

标签: javascript jquery html html5

我正在使用它来限制用户输入数字。我希望他只输入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 :(得分:0)

使用/[0-9]/, ''

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

答案 1 :(得分:0)

您尝试过类似的事情

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

答案 2 :(得分:0)

我建议改用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>