哈哈,大师来了。也看了不少正则式的资料了,才知道这点差别。可见有的资料也是误导了人啊!才知道“[.]{4} 是匹配四个连续的句点字符而已”。在网上流行的政则式说明资料里面,都有这样的话:
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
被这些误导搞晕了。
那么,大师:\s,\w等等,放在中括号[]里,和不放在中括号[]里,又有什么不同呢??

解决方案 »

  1.   

    所言极是:
    如果你要匹配所有非\n字符4个的话需要
    var re=/.{4}/g;

    var re=/[.]{4}/g  与   var re=/\.{4}/g    相同,
    表示四个.  此时的.没有特殊意义了,只代表英文的句点。
      

  2.   

    \s  空格
    \w  [a-zA-Z0-9_]
    若只是匹配一种类型的字符,放不放在[]都没有关系,比如 \w{4}  [\w]{4}
    但若是多种类型的组合那就得用 [] 包括起来了, [\s\w]{4}   \s\w{4}
    这两种写法就不太一样了。
      

  3.   

    var re=/(?:^$)|(?:.{3})/;
    var str="aaaaaaaa";
    if (re.test(str)){
      alert("请输入文件名");
    }
    请问为什么re.test(str)返回true?当str里的字符数为1,2,时候都返回false,但是大于3的时候也应该返回法律色啊?
    谢谢,
      

  4.   

    各位:[\s\w]{4}   \s\w{4}的区别是:后者的{4}只说明了\w的出现次数而\s肯定只出现一次。
    对吗?
    那么请问:\s\w,\d 等等元字符,并不会因为是否处于中括号内而改变它们本来的意思。只有.才存在这个区别?
    今日一问,真是学了不少。
      

  5.   

    var re=/^(?:|.){3}$/;
    var str="aaaaaaaa";
    if (re.test('fhd'))
    {
      alert("请输入文件名");
    }
      

  6.   

    塞北的雪:我的本意是:str要么为空,要么是三个字符。现在是多于3个也返回true
    继续求教。
      

  7.   

    塞北的雪:我的本意是:str要么为空,要么是三个字符。现在是多于3个也返回true
    继续求教。
    谢谢
      

  8.   

    我的正则式:var re=/(?:^$)|(?:.{3})/;想用来达到这个目的,请问错在哪里?
      

  9.   

    var re=/^(?:|.{3})$/;
    var str="aaaaaaaa";
    if (re.test('fhd'))
    {
      alert("请输入文件名");
    }