js前端处理过滤特殊字符以及输⼊法特殊表情符号emoji的正则⽅法,解决数据
库报错问题。
现在,输⼊法基本上都⽀持表情输⼊和特殊字符,并且可以在input框内输⼊表情,
如果我们不对这些表情进⾏验证的话,我们会发现,有的时候也可以正常
进⾏保存,但是这样会存在⼀定的问题,⽐如当我们把我们的数据存⼊数据库的
时候,会发现有报错,因为UTF-8编码有可能是两个、三个、四个字节。
Emoji表情是4个字节,⽽MySQL的utf8编码最多3个字节,所以数据插不进去。
遇到这种情况主要有两种解决⽅案
1.在后端存⼊数据库的时候,将Mysql的编码从utf8转换成utf8mb4。
2.在前端进⾏正则验证,当提交表情的时候进⾏排除。
前端处理表情时,正则的解决⽅案。
<script>
var reg =/[\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]///这个就是关于前端验证特殊表情的正则。
</script>
可以直接复制下⾯代码到html⽂件中进⾏验证。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="cdn.bootcdn/ajax/libs/jquery/3.5.1/jquery.js"></script>
</head>
<body>
<div class="input-box">
<input type="text"class="val">
<button class="btn">提交</button>
</div>
</body>
<script>
$(document).on("click",".btn",function(){
var reg =/[\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/;
var inputVal =$(".val").val();
st(inputVal)){
input框禁止输入alert("输⼊框内有特殊表情,请删除重新输⼊")
}else{
alert("验证通过")
}
})
</script>
</html>
当然有的时候,我们也要对特殊符号做⼀些排除,我们可以使⽤如下的正则来解决这个问题,
把所有需要排除的特殊字符放进去即可,要注意的是\和[是需要//进⾏转义的
如果需要其他特殊字符如 · ^ 等等,我们直接在正则的后⾯追加即可。
<script>
var reg_mark =/[`~!@#$%^&*()+=|{}':;',/\/\[\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]/
</script>
当我们需要让以上两种正则同时参加校验的时候,这样既可以排除特殊字符,⼜可以排除特殊标签。
我们可以使⽤|符号来进⾏连接,那么完整的代码就如下展⽰。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="cdn.bootcdn/ajax/libs/jquery/3.5.1/jquery.js"></script>
</head>
<body>
<div class="input-box">
<input type="text"class="val">
<button class="btn">提交</button>
</div>
</body>
<script>
$(document).on("click",".btn",function(){
var newReg =/[`~!@#$%^&*()+=|{}':;',/\/\[\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|[\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F] /;
var inputVal =$(".val").val();
st(inputVal)){
alert("输⼊框内有特殊表情或特殊字符,请删除重新输⼊")
}else{
alert("验证通过")
}
})
</script>
</html>
效果图:
通过如上的操作,我们就可以轻松的解决特殊表情和特殊符号的问题了。你学废了吗?
欢迎⼤家交流评论,⼀键三连。~~~