我正在使用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))
})