1
我在電子構建一個小應用程序,並需要發送一個過濾器對象與RegExp從渲染器進程到主進程。我用下面的代碼中渲染過程調用的方法上主要過程:通過電子ipc的RegExp變成普通的對象
const remote = require('electron').remote,
Filter = remote.require('./filter.js'),
filterInstance = new Filter();
let filter = {
$regex: new RegExp(/inventaris/i)
};
filterInstance.find(filter);
在渲染過程filter.$regex instanceof RegExp
返回true。 關於主進程filter.$regex instanceof RegExp
retuns false。
經過一點挖掘,我發現主工藝filter.$regex.constructor
確實返回[Function: RegExp]
。
的問題是,第三方庫(NeDB)檢查變量真正的正則表達式使用:
exports.isRegExp = function(obj){return Object.prototype.toString.call(obj) === '[object RegExp]'};
返回假。除此之外,正則表達式根本不起作用,沒有將其包裝在new RegExp()
中。
'新的RegExp(/.../)'看起來不對。 '/.../'已經是'RegExp'對象。 – melpomene
'/ inventaris/i'和'new RegExp('inventaris','i')'給出完全相同的結果 –
我認爲你將不得不使用'eval(filter。$ regex)'。 –