高分求一JS正则表达式

ily_5242 2010-11-04 09:49:05
2-7个汉字,或4-14个字符(数字、字母和"_")。
正则表达式该怎么结合起来?
求高手赐教。。
在线等。。。
...全文
110 点赞 收藏 20
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
-过客- 2010-11-04
汉字和字符是否可以混合出现,这个是关键,看你说了半天,也没见你说到这个点上

如果是混合的,在之前写的一个正则例子的基础上改下

源字符串:<input id="source" type="text" style="width:300px;">
<br><br>
<input type="submit" value="正则统计" onclick="regex()">
     
<input type="submit" value="ASCII统计" onclick="ascii()">
<br><br>
统计结果:<input id="result" type="text" style="width:300px;">


<br/><br/>
<br/><br/>
验证:任意汉字和字母组合在4到14字节间
<br/><br/>
<input id="byte" type="text" onblur="checkByte()" style="width:300px;">
<br/><br/>
<div id="anchorDIV"></div>


<script type="text/javascript">
document.close();
document.open();
function ascii()
{
var str = document.getElementById("source").value;
document.getElementById("result").value = asciilen(str);
}
function regex()
{
var str = document.getElementById("source").value;
document.getElementById("result").value = asciilen(str);
}

function asciilen(src)
{
var byteLen=0;
var len=src.length;
if(src)
{
for(var i=0; i<len; i++)
{
if(src.charCodeAt(i)>255)
{
byteLen += 2;
}
else
{
byteLen++;
}
}
return byteLen;
}
else
{
return 0;
}
}

function regexlen(src)
{
return src.replace(/[^\x00-\xFF]/g,'**').length;
}

function checkByte()
{
var str = document.getElementById("byte").value;
var len = regexlen(str);
if(len < 4 || len > 14)
{
document.getElementById("anchorDIV").innerHTML="<font color='red'>输入字符不符合长度限制!</font>";
}
else
{
if(/^[\u4e00-\u9fa5a-zA-Z0-9_]{2,14}$/.test(str))
{
document.getElementById("anchorDIV").innerHTML="<font color='green'>符合要求!</font>";

}
else
{
document.getElementById("anchorDIV").innerHTML="<font color='red'>输入字符不符合规则!</font>";
}
}
}
</script>
回复
ily_5242 2010-11-04
问题已解决 好~~散分。。。。。。。。。
谢谢各位的热心帮助~!
回复
kkbac 2010-11-04
2-7个汉字,或4-14个字符(数字、字母和"_")。
混写也可以检测.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>

<script type="text/javascript">
function TestLength(){
var s = document.getElementById("mm").value; // "输入的字符串 document.getElementById('inputid').value";
var r1 = /[^_0-9a-zA-Z\u4e00-\u9fa5]/g;
var r2 = /[\u4e00-\u9fa5]/g;
var length = 0;
if (r1.exec(s)) {
alert("仅 汉字 数字 字母和 _");
return false;
} else {
length = s.replace(r2,"**").length;
if(length >14 || length < 2){
alert("2-7个汉字,或4-14个字符(数字、字母和'_')。当前长度:" + length);
return false;
} else {
alert("ok");
return true;
}
}
}
</script>

</head>
<body>
<input type="text" id="mm" />
<input type="button" onclick="TestLength()" value=" test " />
</body>
</html>
回复
thr828 2010-11-04
/^(([\u4e00-\u9fa5]{2,7})|([0-9a-zA-Z_]{4-14}))$/


给分呀,呵呵
回复
兔子-顾问 2010-11-04
^([\u4e00-\u9fa5]{2,7}|[0-9a-zA-Z_]{4,14})$
回复
kkbac 2010-11-04
汉字和字符混着算不算?
回复
damjmk2 2010-11-04
(^[\u4e00-\u9fa5]{2,7}$)|(^([0-9a-zA-Z_]{4-14})$) 我这个写错了呢

(^[\u4e00-\u9fa5]{2,7}$)|(^([0-9a-zA-Z_]{4,14})$)
这样的,真不好意思



回复
ily_5242 2010-11-04
[Quote=引用 10 楼 damjmk2 的回复:]

(^[\u4e00-\u9fa5]{2,7}$)|(^([0-9a-zA-Z_]{4-14})$)

这样就好了,上面写的不能排除 "啊啊啊as" 这样的
[/Quote]

改成这样 汉字是可以了 但是4-14个字符就不行了/^([\u4e00-\u9fa5]{2,7}$)|(^([0-9a-zA-Z_]{4-14}))+$/
回复
damjmk2 2010-11-04
(^[\u4e00-\u9fa5]{2,7}$)|(^([0-9a-zA-Z_]{4,14})$)
写错了...

回复
ily_5242 2010-11-04
[Quote=引用 6 楼 hch126163 的回复:]

/^([\u4e00-\u9fa5]{2,7})|([0-9a-zA-Z_]{4,14})$/
[/Quote]
这个试了 不行 输入超过8个汉字也不会提示出错。。
回复
damjmk2 2010-11-04
(^[\u4e00-\u9fa5]{2,7}$)|(^([0-9a-zA-Z_]{4-14})$)

这样就好了,上面写的不能排除 "啊啊啊as" 这样的
回复
ily_5242 2010-11-04
[Quote=引用 7 楼 damjmk2 的回复:]

哦,你的意思是要验证一个字符串 为4-7个汉字或者 4-14个字符是吗?
[/Quote]

嗯嗯 是的 试过很多次都不行。。
回复
不懂装懂 2010-11-04
^([\u4e00-\u9fa5]{2,7}|[0-9a-zA-Z_]{4,14})$
回复
damjmk2 2010-11-04
哦,你的意思是要验证一个字符串 为4-7个汉字或者 4-14个字符是吗?
回复
hch126163 2010-11-04
/^([\u4e00-\u9fa5]{2,7})|([0-9a-zA-Z_]{4,14})$/
回复
ily_5242 2010-11-04
[Quote=引用 4 楼 ily_5242 的回复:]

引用 3 楼 damjmk2 的回复:

([\u4e00-\u9fa5]{2,7})|([0-9a-zA-Z_]{4,14})

不行呀 输入汉字没有限定字数 随便输入多少个都可以。。
[/Quote]
 /^([\u4e00-\u9fa5]{2,7})|([0-9a-zA-Z_]{4,14})$/
就是不行
回复
ily_5242 2010-11-04
[Quote=引用 3 楼 damjmk2 的回复:]

([\u4e00-\u9fa5]{2,7})|([0-9a-zA-Z_]{4,14})
[/Quote]
不行呀 输入汉字没有限定字数 随便输入多少个都可以。。
回复
damjmk2 2010-11-04
([\u4e00-\u9fa5]{2,7})|([0-9a-zA-Z_]{4,14})
回复
dhdhzzw 2010-11-04
去阿里西西看看。是否有合适的正则表达式。

我也帮你顶顶吧。
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2010-11-04 09:49
社区公告
暂无公告