string模式到正则expression式
我正在使用mongodb来存储数据。 我想存储完整的正则expression式作为string:
{ permissions: [{ resName: '/user[1-5]/ig', isRegex: true }] }
我知道有模块mongoose-regexp
可以存储RegExp,但我想存储正则expression式和string在同一个字段。
我已经实现了使用eval(user.permissions[i].resName).test(resName)
。 我想知道这是否是正确的方法,如果有任何替代(即使用new RegExp(...)
)
编辑
我试图避免eval
因为这个字段是来自用户input,如果有什么东西发送到数据库可能是一个问题。
这应该让你在那里
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)) })