js 正则验证不能含有中文与特殊字符

JavaScript04

js 正则验证不能含有中文与特殊字符,第1张

varmyReg = /^[a-zA-Z0-9_]{0,}$/ if(!myReg.test(input.val())) {   $.validation.tip(false, input, "用户名不能含有中文或特殊字符")   return } js通过正则表达式限制input输入框只能输入英文字母和数字,不能输入中文。 <input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')"> 文本框中仅允许输入英文字母,小数点,数字,禁止输入中文字符以及其他特殊字符! <input type="text" name="username" onkeyup="value=value.replace(/[^\w\.\/]/ig,'')" /> 输入大于0的正整数 <input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"> PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用: JavaScript正则表达式在线测试工具: http://tools.jb51.net/regex/javascript 正则表达式在线生成工具: http://tools.jb51.net/regex/create_reg var temp = 'abcdefg Fw:123456 Fw:789.1011' temp =temp.indexOf(‘.’)//匹配某个字符位置 alert(temp)��var temp = 'dsd-5555' temp =temp.replace('-','')//匹配某个字符必替换 alert(temp)

以下答案为纯原生(vanilla Javascript)方法,实际可以用react、vue之类的库,通过数据绑定的方法实现这种功能。我用的是ECMAScript6的写法,其中let, const关键字老版本IE可能不识别,可以全部换成var。

在var fir = document.getElementById("fir")语句后面加入

function inputHandler (e) {

  e.target.value = e.target.value.replace(/不/g, '')

}

let _debounceTimerId

function debounce (f, ms) {

  const self = this

  return function() {

      const args = arguments

      _debounceTimerId &&clearTimeout(_debounceTimerId)

      _debounceTimerId = setTimeout(function() {

          f.apply(self, args)

      }, ms)

  }

}

fir.addEventListener('input', debounce(inputHandler, 50))

解释:

1、使用HTMLInputElement实例的input事件,该事件在每次键入后都会触发

2、中文输入法在单次键入后,会多次触发input事件,两次触发间隔大概在1-2ms左右

3、为了防止多次触发,需要使用debounce(不知道怎么翻译,暂且用数字电路的“限制抖动”的概念吧),我上面写了一个我自己编的debounce函数,实际可以用现成的库函数,比如Lodash的_.debounce()

4、debounce(inputHandler, 100) 会保证抖动结束100ms后,运行inputHandler中的语句把"不"字去除。

我可能给不了你特别准确的答案,我只是说一下,我自己的观点,希望对你有帮助。在javascript中,采用的是ASCII编码的形式,这种编码方式是不支持中文的,只有在“”内书写的内容以及注释文字才会支持中文,在这两种情况下采用的是Unicode编码的形式(支持中文),而咱们所说的UTF-8是对Unicode编码的一种应用,当然,你也时能用于这两种情况了。