一个简单的js正则问题

这是我的js代码:

function preg_match_all(rules, str){
    
    let results = [];
    
    //if(isEmpty(rules)) return results;
    let exp = eval(rules);
    
    let result;
    
    while( (result = exp.exec(str))!= null){  
         results.push(result);
    }
    
    return results;
    
}

let str = 'a[class=cl bbda pbm mbm]f';

let rules = '\[(.*?)\]';
let rarr = preg_match_all('/'+rules+'/ig', str);

dlog(rarr);

但输出没东西。

我用php写的:

$str = 'a[class=cl bbda pbm mbm]f';

$rules = "/\[(.*?)\]/isU";

preg_match_all($rules, $str, $out, PREG_SET_ORDER);
    
print_r($out);

输出:

Array (

[0] => Array
    (
        [0] => [class=cl bbda pbm mbm]
        [1] => class=cl bbda pbm mbm
    )

)

这正是我想要的效果,我的js代码出了什么问题呢?死活搞不出来

阅读 1.9k
1 个回答

代码有语法错误呗,JS执行遇到错误,后面就不执行了

function preg_match_all(reg, str){
    
    let results = [];
    
   // if(isEmpty(rules)) return results;
   var exp=reg;
    
    let result;
    
    while( (result = exp.exec(str))!= null){  
         results.push(result);
    }
    
    return results;
    
}

var str = 'a[class=cl bbda pbm mbm]f';
var rarr = preg_match_all(/\[(.*?)\]/g, str);

console.log(rarr)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题