如何将输入框内汉字表示成两字符

最近在写表单验证的小例子,碰到了这样的一个问题:

用户需要输入的昵称文本框,给出限定:

1、包含汉字、字母、数字下划线以及@!#$%&*<br/>特殊字符
2、长度为4-20个字符
3、一个汉字占两个字符

前两项其实用一个简单的正则表达式就可以验证,即var reg = /^([\u4e00-\u9fa5]|\S]|){4,20}$/;

ps:汉字的正则是[\u4e00-\u9fa5]

真正的问题出现了:怎么才能让汉字占两个字符呢,系统默认它是一个字符

其实并不难解决,只要把文本框内所有的汉字都转换成"ab"就可以了,即 "中国" = "abab"

但是之前写的那个正则表达式就需要更改,不能限定长度是{4,20},应该为"+",因为尽管用replace方法可以将汉字转为"ab",但是文本框的内容并没有改变,也就是说我们想验证的话只能是分成两个判断:1.输入内容符合条件一;2.输入内容的长度符合条件二.

下面贴一下代码:

ps:getRoot(),show(id,msg,classname),correct(id)这三个是单独写的展示结果方法

 

posted @ 2016-03-23 22:34  小团团  阅读(819)  评论(0)    收藏  举报