使用具有特定条件的正则表达式验证输入

时间:2019-05-15 00:19:43

标签: jquery html regex

我想替换输入值以验证具有以下条件的客户名称

  1. 输入可以使用字母值
  2. 输入只能使用特殊字符,例如“'空格”
  3. 如果有相邻的`'或空格集,则将其替换为1

像jone 'sfsd => jone sfsd(删除后面的特殊字符,因为不允许两个相邻字符) 约翰·凯特=>约翰·凯特(用1删除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 :(得分:0)

将您的最后replace行更改为

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

这匹配两个或特殊字符(因为从您的第一个a-z开始,除replace以外的其他任何字符都是允许的特殊字符),捕获第一个字符和replaces the match with the contents of the first capture group

$(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'>