使用正则expression式来比较mongodb中的车辆号码

我有一个场景,我想比较数据库中的车辆号码。 如果input的数字是KA03ME0101,我只会从string中提取第3,4和7个数字,直到最后一个元素,然后在我想要应用正则expression式的数据库中进行比较,然后对数字进行比较。 现在我将它存储为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 ,我想写一个查询,在这里我只能比较不包括KAME的号码,只拿到号码030101 。 所以前两个单词被跳过,然后拿起第三和第四个号码,然后跳过第五和第六个,拿起剩下的号码。 从用户angular度来看,我会以相同的方式拿起号码,然后比较一下。 我如何申请正则expression式来做到这一点,任何领导将是有益的谢谢你。

您可以简单地从参数中提取数字并使用它进行查询。 所以在你的例子params.vehicle_number.match(/\d+/g).join('')会给你030101 。 所以你的查询应该如下所示:

 '$and' : [ { 'booking_status' : { '$eq' : 'checked_in' }}, { 'vehicle_number' :params.vehicle_number.match(/\d+/g).join('') } ] 

你可以在这里玩正则expression式: 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); } } }