求一个正则表达式!!!!!!!!!!

dln1234 2008-10-22 11:34:36
允许4-40个字符,可以由汉字、英文字符、数字和下划线,但不能是纯数字。一个汉字算为两个字符。
强调:突出1个汉字是2个字符。
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
strife013 2008-10-31
  • 打赏
  • 举报
回复
    function check(teststr)
{
if(teststr.replace(/[\u4e00-\u9fa5]|\w/g,"") != "")return false;
if(teststr.replace(/\d/g,"")=="")return false;
if(teststr.replace( /[\u4e00-\u9fa5]/g,"aa").length >40 || teststr.replace( /[\u4e00-\u9fa5]/g,"aa").length < 4 )return false;

return true;
}
Atai-Lu 2008-10-22
  • 打赏
  • 举报
回复
强调:突出1个汉字是2个字符。
--------------
这个好像有点难办...正则式似乎没法将汉字作为两个字符进行判断
iori2013 2008-10-22
  • 打赏
  • 举报
回复
<script type="text/javascript">
aww="fewge你我w他"
str=aww
aa=/([\u00FF-\uFFFF])/
while(aa.test(str)){
str=str.replace(aa,"aa")
}
alert(str.length)
</script>
varlj 2008-10-22
  • 打赏
  • 举报
回复
我以前是先用正则匹配,如果成功,再找出中文个数,加一下就是总长了
oldjwu 2008-10-22
  • 打赏
  • 举报
回复
不那么简洁的方法:



if (s.match(/^[_0-9a-zA-Z\u4e00-\u9fa5]+$/) && !s.match(/^\d+$/)) {
//上面判断是否由汉字、英文字符、数字和下划线组成,并且不能是纯数字

var tempLength = s.length + s.replace(/[\x00-\xff]/g, "").length;
//上面一行计算长度,一个汉字的长度为2

if (tempLength >=4 && tempLength <= 40) {
//符合要求...
} else {
//不符合要求...
}
}
java__king 2008-10-22
  • 打赏
  • 举报
回复
有点难,学习.
dln1234 2008-10-22
  • 打赏
  • 举报
回复
用别的方法也可以啊 只要突出1个汉字是2个字符。

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧