如何使用带数字的正则表达式
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);
// ...
我不熟悉编程和构建我的第一个全栈应用程序。在我的应用程序中,我有两个实体,分支机构和帐户。分支名称是字母数字字符串,而帐户只是数字,例如 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);
// ...