用正则表达式限制文本表单的中/英文字符个数

 表单的最大长度属性maxlength=30限制的不管是中文还是英文的字符均为30个。所以如果处理表单的后台程序是C语言写的(如Thttpd服务器下的WEB),在填充数据时会因为字符长度超过申请的变量空间而报错,因为一个中文字符占两个字节,所以如果maxlength=30时,只能充许输入15个中文字符。所以可以将中文字符置换为两个任意的英文字符再计算长度与maxlength比较,然后再截取符合需要长度。如:

 

<input type="text" maxlength="6" value="" οnkeyup="while(value.replace(/[^\x00-\xff]/g, '**').length>maxLength)value=value.slice(0,-1)">

 

\xn匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如:'\x41'匹配"A "。'\x041 '则等价于'\x04 '&"1 "。正则表达式中可以使用ASCII编码。
  
[^\x00-\xff]即ASCII编码不在0-255的字符

 

正则表达式中:\xhh,匹配的是一个十六进制字符hh.(注:h取值范围是0-9a-f)
\x00-\x1f:匹配十进制是0-31的字符;如下图所示:
http://walsh.iteye.com/upload/attachment/138588/e879dc1c-f19a-3954-8426-61a7f4b45ce0.gif
注:Hx下边的那一列正式十六进制数,后边对应的就是字符
\x80-\xff:匹配用GBK (GB2312/GB18030)编码的所有汉字和标点符号

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值