首页 > 一个简单的js正则问题

一个简单的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代码出了什么问题呢?死活搞不出来


代码有语法错误呗,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)
【热门文章】
【热门文章】