我正在使用mongodb来存储数据。我想将完整的正则表达式存储为字符串:

{
  permissions: [{
    resName: '/user[1-5]/ig',
    isRegex: true
  }]
}


我知道有一个模块mongoose-regexp可以存储RegExp,但是我想将regex和字符串存储在同一字段中。

我已经使用eval(user.permissions[i].resName).test(resName)实现了它。我想知道这是否正确,是否还有其他选择(即使用new RegExp(...)

编辑

我正在尝试避免使用eval,因为此字段来自用户输入,如果某些恶意事件发送到db,可能会出现问题。

最佳答案

这应该带你去



const rxFinder = /^\/(.+)\/((g|i|m|u|y)*)$/
const resName = '/user[1-5]/ig'

const resRx = new RegExp(...rxFinder.exec(resName).slice(1))

console.info(resRx)

const testStrings = ['String for User5, eh', 'Bad User7 string']

testStrings.forEach(str => {
  console.info(JSON.stringify(str), 'is a match:', resRx.test(str))
})

09-20 05:19