正则:/[^a-zA-Z0-9\u4E00-\u9FA5]/g,''
采用该正则表达式后,使用搜狗输入法没有问题,但采用微软自带输入法后,会存在输入数字及英文时为正常,切换为汉字后,会存在吞并当前光标前的字符。具体吞并个数和输入法中有几个汉字相关。
![](https://i-blog.csdnimg.cn/blog_migrate/67cf55bcadf09b87b7aaef127e5293f6.png)
输入后点击其它位置 @keyup方法中打印日志会打印出在输入法中当时的字符数,发现会比正常输入英文时多出了一个”'“,导致不符合正则表达式,从而出现问题
![](https://i-blog.csdnimg.cn/blog_migrate/5162c922bf2bb08d21543b3080c51c82.png)
更改正则表达式如下代码块所示
<el-form ref="form" :model="form" :rules="formRule">
<el-form-item label="用户名" prop="userName">
<el-input class="input-long" v-model="form.userName"
oninput="value=value.replace(/[^'\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')">
</el-input>
</el-form-item>
<el-form-item label="账号" prop="userAccount">
<el-input class="input-long" v-model="form.userAccount"
oninput="value=value.replace(/[^'\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')">
</el-input>
</el-form-item>
</el-form>