这种方法就可以完美解决禁止输入特殊,目前线上没有发现问题
<el-input
placeholder="I'm shopping for..."
v-model="searchVal"
id="right_radius_set"
@keyup.native="prohibit_input"
@keyup.enter.native="toSearch"
<a slot="suffix" @click="toSearch">
<i class="el-input__icon el-icon-search"></i>
</el-input>
prohibit_input() {
this.searchVal = this.Prohibit_special_characters(this.searchVal)
Prohibit_special_characters(special) {
var special_regular = new RegExp(
"[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
var reflow_special = ''
for (var i = 0; i < special.length; i++) {
reflow_special = reflow_special + special.substr(i, 1).replace(special_regular, '')
return reflow_special
开发中总是遇到奇奇怪怪的坑,所以还是要多多学习和总结。
前言最近在项目中有一个需求是禁止输入特殊字符,一开始我是在网上找的正则表达式直接用的,后来发现这个表达式同时也禁止了v,x,y,z,所以后来就想了一个比较笨的方法,把所有的特殊字符全部罗列出来,然后在匹配一下。最后在输入的时候禁止就好了。项目都是在vue中的,所有方法都是在methods里边的。step 一, 正则表达式解决方案用这种方式替换,会导致v,x,y,z输入不进去,亲测。 <el-input placeholder="I'm shopping f
不能输入!@#¥%……&* 这种字符的正则表达式书写:
/[@#\$%\^&\*]+/g 这个是包含以上任意一个特殊字符。取! 即可
alert(!/[@#\$%\^&\*]+/g.test(“test”)) 返回 false 就代表不包含非法字符 .
PS:关于正则表达式,这里再提供2款本站的在线正则表达式工具供大家参考使用(包括常用正则的生成、匹配、测试等):
JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:http://tools.jb51.net/regex/create_reg
function checkval(t) {
var re = /^[\u4e00-\u9fa5a-z]+$/gi;//只能输入汉字和英文字母
if (re.test(t)) {
return true;
} else {
return false;
js正则表达式,验证同一字符串不同
var num = 888;
var reg = /^[1-9]{1}[0-9]*$/g;
console.log(reg.lastIndex);//0
<input onkeyup="this.value=this.value.replace(/[^u4e00-u9fa5w]/g,'')">;
2.JS 控制文本框只能输入数字
<input onkeyup="value=value.replace(/[^0-9]/g,'')"
onpaste="value=value.replace(/[^0-9]/g,'')"
oninput = "value=value.replace(/[^0-9]/g,'')
function (even) {
// 规则对象(flag)
var flag = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>《》/?~!@#¥……&*()——|{}【】‘;:”“'。,、? ]")
// 判断 even 是否包含特殊字符
if(flag.test(even)){
console.log('包含!')
}else{
其中取反正则表示 ^((?!需要取反的内容).)*
^((?!([\^~@&$#%*'<>|\(\)])|(!=)|(--)|(\.\.)|(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|drop|execute)).)*
只允许输入大于0的数字,小数点后面最多俩位
^([1-9]\d?(\.\d{1,2})?|0.\d{1,2}|1...
var regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im,
regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im;
if(regEn.test(labelName) || regCn.test(labelName)) {
alert("名称不能包含
特殊字符.");
return;
一、正则表达式
1、正则表达式概述
正则表达式( Regular Expression )是一种用于匹配字符串中字符组成的模式,用来检测某个字符串的组成是否符合某种要求或规则,通常用来验证表单:例如验证用户名只能由英文字母、数字、下划线组成。而且,正则表达式还可以用来替换页面中的一些敏感词,或者从字符串中获取我们想要的特定部分字符串。
在 JavaScript 中,正则表达式也是一种对象。目前在 JS 中我们主要是用正则表达式来进行表单验证。
2、正则表达式的特点
① 灵活性、逻辑性和功能
JS正则表达式可以用来限制输入框中文字符。一般情况下,JS正则表达式可以通过匹配字符来判断输入框中文字符是否符合要求。
例如,可以通过以下代码来检查输入框中只能输入中文字符:
function validateInput(input) {
var reg = /^[\u4e00-\u9fa5]+$/;
if (!reg.test(input.value)) {
alert("输入框中只能输入中文字符!");
input.value = "";
input.focus();
return false;
return true;
以上代码中,使用了正则表达式“/^[\u4e00-\u9fa5]+$/”,其中“^”表示匹配输入字符串的开始,“[\u4e00-\u9fa5]”表示匹配所有中文字符,“+”表示匹配字符串1次或多次,“$”表示匹配输入字符串的结尾。
当输入框中输入的字符不符合要求时,会弹出一个提示框,清空输入框中已输入的字符,并将输入框焦点聚焦到该输入框中,让用户重新输入。
需要注意的是,以上代码只能限制输入框中输入中文字符,如果需要限制输入框中输入其它字符,需要相应修改正则表达式。另外,也需要考虑到用户可能会通过其它方式输入非中文字符的情况,如复制粘贴等操作。