我使用mongodb来存储数据。我想将完整的正则表达式存储为字符串:
{
permissions: [{
resName: '/user[1-5]/ig',
isRegex: true
}]
}
我知道有一个模块mongoose-regexp
可以存储RegExp,但我想将regex和字符串存储在同一个字段中。
我使用eval(user.permissions[i].resName).test(resName)
实现了它。我想知道这是否是正确的方法,如果有任何替代方法(即使用new RegExp(...)
)
修改
我试图避免eval
,因为此字段来自用户输入,如果将某些恶意内容发送到db,则可能会出现问题。
答案 0 :(得分:2)
这应该可以帮助你
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))
})