我想替换输入值以验证具有以下条件的客户名称
像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'>
答案 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'>