主要思路
- 获取当前input的值
- 拿到当前值的最后一位字符
- 正则匹配最后一位字符是否是特殊字符,并截取。(这里比较特殊的是中文的省略号和中划线,中文输入法状态会自动生成两个字符,所以在截取的时候要去掉后两位。)
i : ignore 执行大小写不敏感的匹配
m: multiple 多行模式
// 第一种方式比较强势(有点傻),正则里是键盘上所有特殊字符,包括中英文输入法(特殊的是中文的省略号和中划线要截取掉后两位)
$("input").on('input propertychange',function(){
var value = $(this).val();
var lastV = value.substring(value.length-1,value.length);
var pattern = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%&*()\-+={}|《》?:“”【】、;‘’,。、]/im;
var pattern1 = /[……——]/im;
if(pattern.test(lastV)){
$(this).val(value.slice(0,value.length-1));
}
if(pattern1.test(lastV)){
$(this).val(value.slice(0,value.length-2));
}
});
// 第二种方式比较直观
var pat = /[0-9a-zA-Z]|[\u4e00-\u9fa5]/im; // 只能输入字母、数字、和中文字符
if(!pat.test(lastV)){
$(this).val(value.slice(0,value.length-1));
}
if(pattern1.test(lastV)){ // 这里的原因是中文的省略号和中划线要截取掉后两位!!!
$(this).val(value.slice(0,value.length-2));
}