\s 任何空白符,等价于[ \t\n\r\f\v]
\S 任何非空白符,等价于[^ \t\n\r\f\v]括号 () 有两个用途
1 用于把单独的项目分组成子表达式
这种括号通常后接复制字符,复制字符这时只对()内的字符进行复制处理
例如: 
/java(script)?/ 匹配的是字符串 "java",其后既可以有 "script",也可以没有
/(ab|cd)+|ef/ 匹配的既可以是字符串 "ef",也可以是字符串"ab" 或者 "cd" 的一次或多次重复2 在完整的模式(正则表达式)中定义子模式
对一个正则表达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中
所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储
存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式。
每个缓冲区都可以使用'\n'或'$n'访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数
注意,'\n'或'$n'引用的并不是那个子表达式的模式,而是与那个模式相匹配的文本

解决方案 »

  1.   

    括号是分组的意思,每一个组最后用一个$加数字表示
    比如
    (\S+)(\s+)(\S+) 
    第一个匹配就相当于是The rain
    $3 是rain
    $2 是空格
    $1 是The
    最后就是相当于反向
      

  2.   

    你们说临时缓冲区的编号是1-99那你们看下面的`$0是什么意思 而且它有值
    function f2c(s) {
      var test = /(\d+(\.\d*)?)F\b/g;    // 初始化模式。
      return(s.replace
        (test,
          function($0,$1,$2) { 
            return((($1-32) * 5/9) + "C");
          }
        )
      );
    }
    document.write(f2c("Water freezes at 32F and boils at 212F."));