我有一个场景,我想比较数据库中的车辆编号。 如果输入的数字是 KA03ME0101 ,我将只获取第3个第4个和第7个数字,直到字符串中的最后一个元素,并在数据库中进行比较,我想要应用正则表达式对数字执行相同的操作并比较一下。 现在我将它存储为String。
vehicle_number : {
type : String
},
这个查询现在为我做了
bookingSchema.statics.findBookingByVehicleNo = function(params, callback){
return this.findOne({
'$and' : [
{ 'booking_status' : { '$eq' : 'checked_in' }},
{ 'vehicle_number' : params.vehicle_number }
]
}).exec(callback);
}
假设车辆没有`KA03ME0101 ,我想写一个查询,在那里我只能比较不包括 KA 和 ME的数字并仅选取 030101 的数字。 所以跳过前两个单词,然后拿起第3个和第4个数字然后跳过第5个和第6个并取出剩下的数字。 从用户方面,我将以相同的方式获取数字,然后进行比较。 我如何应用正则表达式来执行此操作任何导致都会有所帮助。
答案 0 :(得分:1)
您可以在此处使用正则表达式:http://regexr.com/
对于您的情况,您只想查看数字,所以只需删除非数字并进行比较即可:
var plates = [
'KA03ME0101',
'AK03EM0101'
];
var regularExpression = /\D/ig;
for (var indexA = 0; indexA < plates.length; indexA++) {
var a = plates[indexA];
for (var indexB = indexA + 1; indexB < plates.length; indexB++) {
var b = plates[indexB];
if (a.replace(regularExpression, '') == b.replace(regularExpression, '')) {
console.log(a, 'matches', b);
}
}
}
&#13;
答案 1 :(得分:1)
您可以简单地从参数中提取数字并使用它进行查询。
因此,在您的示例中,params.vehicle_number.match(/\d+/g).join('')
会为您提供030101
。所以你的查询应该如下:
'$and' : [
{ 'booking_status' : { '$eq' : 'checked_in' }},
{ 'vehicle_number' :params.vehicle_number.match(/\d+/g).join('') }
]