正则表达式的字符串模式

时间:2017-03-08 23:00:06

标签: javascript regex node.js mongodb

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

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

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

我使用eval(user.permissions[i].resName).test(resName)实现了它。我想知道这是否是正确的方法,如果有任何替代方法(即使用new RegExp(...)

修改

我试图避免eval,因为此字段来自用户输入,如果将某些恶意内容发送到db,则可能会出现问题。

1 个答案:

答案 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))
})