function jRegfun(inputstring,pattern){
 try {
   var result = pattern.exec(inputstring);
   return result[0];
  } catch(err) {
 return null;
  } finally {

  }
 } 
  var v="DSL HONG KONG";
  var pattern="/DSL\s+HONG\s+KONG/";
  var Result=jRegfun(v,pattern);    // <--- 这里返回结果为 null;    Result=jRegfun(v,/DSL\s+HONG\s+KONG/);   <-- 这里返回结果为  "DSL HONG KONG"  //为什么会这样, 我的正则表式示存大一个文本文件里面 根据需要 动态调用,   
  //从文本文件中取来的正则表达式 就存放在字符变量 pattern中, 如果参数不能为字符串,哪该如何是好  ?      
</script>

解决方案 »

  1.   


    var pattern="/DSL\s+HONG\s+KONG/";
    // 更正, 不要加引号,加引号就不是 RegExp 对象了,成了字符串常量
    var pattern=/DSL\s+HONG\s+KONG/;
      

  2.   

    如果 pattern 是字符串变量
    function jRegfun(inputstring,pattern){
         try {
           var result = pattern.exec(inputstring);
           return result[0];
          } catch(err) {
             return null;
          } finally {
            
          }
     } 
      var v="DSL HONG KONG";
      var pattern="DSL\\s+HONG\\s+KONG";
      var Result=jRegfun(v, new RegExp(pattern));    // <--- 这里返回结果为 null;  alert(Result);
      pattern="/DSL\\s+HONG\\s+KONG/";
      Result=jRegfun(v, eval(pattern));    // <--- 这里返回结果为 null;
      
    alert(Result);