如何使用带数字的正则表达式

How to use Regex with numbers

我不熟悉编程和构建我的第一个全栈应用程序。在我的应用程序中,我有两个实体,分支机构和帐户。分支名称是字母数字字符串,而帐户只是数字,例如 116003183、16582368。场景是当用户输入分支的前几个字母时,所有匹配结果都会显示出来。我无法对帐户做同样的事情,因为那是所有数字。我查看了几个可以使用 [0-9] 的站点,但我不知道如何实现该代码。这是我的代码。任何帮助或线索将不胜感激。

router.get('/', async (req, res) => {
let query = Account.find()
if (req.query.name != null && req.query.name != ''){
query= query.regex('name',new RegExp(req.query.name))
    }  
 try{
 const accounts = await query.exec()
 res.render('accounts/index',{
 accounts: accounts,
 searchOptions:req.query
 })
 }
 catch(err) {

 res.redirect('/')
  }        
  })

使用 $expr-operator,您可以构建一个查询,将类型 number 的帐户名称字段转换为字符串,然后对该字段进行正则表达式匹配:

// ...
const query = {};
if (req.query.name != null && req.query.name != ''){
   query.$expr = {
        "$regexMatch": {
           "input": {"$toString": "$name"}, 
           "regex": new RegExp(req.query.name)
        }
    }
}
const accounts = await Account.find(query);
// ...