从对象键创建正则表达式

时间:2015-01-10 17:51:07

标签: javascript regex underscore.js

如何使用Underscore更好地简化以下操作?对于非常简单的事情来说感觉太多了。它从对象键创建一个正则表达式。

var obj = {
   'dog' : 1,
   'cat' : 1,
   'rat' : 1
};

var arr = [], regex;

_.each( obj, function( value, index ){
  arr.push( index );
});

regex = _.reduce( arr, function(){
  return new RegExp( arr.join('|'), 'i' );
});

// console.log( regex ) should output: 
/dog|cat|rat/i 

2 个答案:

答案 0 :(得分:1)

只需使用Object.keys和本地Array.prototype.join,就像这样

console.log(new RegExp(Object.keys(obj).join("|"), "i"));

使用_,它将是_.keys

console.log(new RegExp(_.keys(obj).join("|"), "i"));

结果将是

/dog|cat|rat/i

答案 1 :(得分:0)

我很快意识到你不需要使用下划线。

 var regex = new RegExp( Object.keys( obj ).join('|'), 'i' );