晕,用两个吧。。 var p = /^(?:(?:[ ]|^)(?:[\u4e00-\u9fa5aA-Za-z]+|(?:[\u4e00-\u9fa5aA-Za-z]+\d+[\u4e00-\u9fa5aA-Za-z]*|[\u4e00-\u9fa5aA-Za-z]*\d+[\u4e00-\u9fa5aA-Za-z]+)+))+[ ]*$/; 末尾有空格不匹配加个判断就好了。
嗯,看来还是分成两个的好,看着也清楚 不过jinjuduo() "a1"这个怎么不匹配啊
<script> var str="a1" var re1 = /[\u4e00-\u9fa5a-z\d ]*(?:[\u4e00-\u9fa5a-z]+)/i; var re=/\s+\d+\s+/; if (re1.test(str)&&!re.test(str)) { alert ("ok"); } else alert("no");
</script>
var str="a1 1 "; var re1 = /^[\w ]*$/i; var re=/(\s|^)\d(\s|$)/; if (re1.test(str)&&!re.test(str)) alert ("ok"); else alert("no");
用[^\x00-\xff]来匹配汉字会不会匹配到非法字符?
给几个字符串用来测试
" " 不匹配
"12 3" 不匹配
"a 3 a" 不匹配
"A" 匹配
"f3d fdf" 匹配
"啊3 啊" 匹配
alert(p.test(" "));
alert(p.test("12 3"));
alert(p.test("a 3 a"));
alert(p.test("A"));
alert(p.test("f3d fdf"));
alert(p.test("啊3 啊"));
这个和你匹配汉字字母数字和空格,但不能都是空格和数字
这个是相符的。
//var str=" ";
//var str="12 3";
// var str="a 3 a";
//var str="f3d fdf"
var str="啊3 啊"
var re1 = /^[\u4e00-\u9fa5a-z\d ]*(?:[\u4e00-\u9fa5a-z]+)$/i;
var re=/\s+\d+\s+/;
if (re1.test(str)&&!re.test(str))
{
alert ("ok");
}
else
alert("no");
</script>
<script type="text/javascript">
var p = /^(?:(?:[ ]|^)(?:[\u4e00-\u9fa5aA-Za-z]+|(?:[\u4e00-\u9fa5aA-Za-z]+\d+[\u4e00-\u9fa5aA-Za-z]*|[\u4e00-\u9fa5aA-Za-z]*\d+[\u4e00-\u9fa5aA-Za-z]+)+))+$/;
//alert(p.test("你"));
alert(p.test(" "));
alert(p.test("12 3"));
alert(p.test("a 3 a"));
alert(p.test("A"));
alert(p.test("f3d fdf"));
alert(p.test("啊3 啊"));
</script>
你分成两个了,这样表达式似乎更简单些,不过你把大写字母给落掉了muxrwc(生命曾可贵,信念价更高,学习要努力,追猫永不弃。)
这个可以,表达式还真是长,看的我眼花,不过有个小问题,末尾的空格不匹配,字符被两个以上空格分开也不匹配
var p = /^(?:(?:[ ]|^)(?:[\u4e00-\u9fa5aA-Za-z]+|(?:[\u4e00-\u9fa5aA-Za-z]+\d+[\u4e00-\u9fa5aA-Za-z]*|[\u4e00-\u9fa5aA-Za-z]*\d+[\u4e00-\u9fa5aA-Za-z]+)+))+[ ]*$/;
末尾有空格不匹配加个判断就好了。
不过jinjuduo() "a1"这个怎么不匹配啊
var str="a1"
var re1 = /[\u4e00-\u9fa5a-z\d ]*(?:[\u4e00-\u9fa5a-z]+)/i;
var re=/\s+\d+\s+/;
if (re1.test(str)&&!re.test(str))
{
alert ("ok");
}
else
alert("no");
</script>
var re1 = /^[\w ]*$/i;
var re=/(\s|^)\d(\s|$)/;
if (re1.test(str)&&!re.test(str))
alert ("ok");
else
alert("no");
如果用两个的话只需要加个判断就可以了。。
<script type="text/javascript">
function check(str) {
return /^(?:(?:[ ]|^)(?:[\u4e00-\u9fa5aA-Za-z]+|(?:[\u4e00-\u9fa5aA-Za-z]+\d+[\u4e00-\u9fa5aA-Za-z]*|[\u4e00-\u9fa5aA-Za-z]*\d+[\u4e00-\u9fa5aA-Za-z]+)+))+[ ]*$/.test(str) || str.match(/[ ]+/g).length > 2;
}
alert(check("1 2 2 "))</script>
最后那个是错的,前面一些不允许匹配的都被匹配上了muxrwc(生命曾可贵,信念价更高,学习要努力,追猫永不弃。)
这个比较强,不过是不是太长了?我先用这个吧