h5input标签使⽤正则表达式限制输⼊
本⼈⼩⽩,⽬前正在做⼀个web系统,今天遇到⼀个需求是患者姓名录⼊的时候只能是字母和汉字。本⼈分析了⼀下,⾸先,这个不能在js ⾥写,不能等到客户填写完毕之后再提醒,因为除了患者姓名之外,还需要限制患者民族,职业等等,所以只能在input标签⾥限制输⼊,此时正则表达式⽐较好⽤。
由于本⼈之前没有使⽤过正则表达式,所以到⽹上实例,但是却误⼊陷坑,折腾了⼀个多⼩时,终于搞定,在此为码友写⼀下正确的写法。
⾸先,汉字的正则表达式为:[\u4e00-u9fa5],⼩写字母的正则表达式为:[a-z] ,⼤写字母的正则表达式为:[A-Z] ,于是,要限制input标签只能输⼊字母和数字,正确的写法应该为:
<input type="text" οnkeyup="this.value=place(/[^a-zA-Z\u4e00-\u9fa5]/g,'')"
maxlength="20"
input绑定onblur事件onbeforepaste="clipboardData.setData('text',Data('text').replace(/[^a-zA-Z\u4e00-\u9fa5]/g,''))" >
但是,我查到⽹上⼏乎所有的写法全都为:
<input type="text" οnkeyup="this.value=place(/[a-zA-Z\u4e00-\u9fa5]/g,'')"
maxlength="20"
onbeforepaste="clipboardData.setData('text',Data('text').replace(/[a-zA-Z\u4e00-\u9fa5]/g,''))">
不知道⼤家有没有看出区别,下⾯的代码⽐上⾯的代码在正则表达式上少了⼀个“^”,本⼈特别奇怪,为什么⽹上所有的教程都是这样的错误,如果是按照下⾯的写法,当⽤户每次输⼊字母或者汉字都会被replace成空,这个与需求恰恰相反。
“^”在“[]”⾥⾯写就是“⾮”,写在“[]”外⾯就是开始。
onkeyup事件会在键盘按键被松开时发⽣,因此上⾯那句话就会实现每当输⼊字母或者汉字就会保存下来,当输⼊别的字符就会被删除(被替换成空字符)。
ps:如果是需要校验⾝份证,那么就不能⽤onkeyup事件了,我⽐较习惯⽤onblur事件,当失去焦点的时候使⽤正则表达式判断⼀下⾝份证号是否符合规则。
本⼈⼩⽩,如果有问题欢迎⼤家在下⽅评论,并且欢迎⼤家为我提出意见,不胜感激。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论