Tengo un escenario en el que quiero comparar el número de vehículo de la base de datos. Si el número ingresado es KA03ME0101 , seleccionaré solo el número que es 3, 4 y 7 hasta los últimos elementos de la cadena y lo compararé en la base de datos donde quiero aplicar expresiones regulares para hacer lo mismo con el número y compararlo. En este momento lo estoy almacenando como String.
vehicle_number : { type : String },Y esta consulta lo hace por mí por ahora.
bookingSchema.statics.findBookingByVehicleNo = function(params, callback){ return this.findOne({ '$and' : [ { 'booking_status' : { '$eq' : 'checked_in' }}, { 'vehicle_number' : params.vehicle_number } ] }).exec(callback); }Supongamos que el número de vehículo es `KA03ME0101 , quiero escribir una consulta, donde puedo comparar solo los números que excluyen KA y ME y seleccionar solo los números que son 030101 . Entonces, las dos primeras palabras se saltan y luego toman el tercer y cuarto número y luego saltan el quinto y el sexto y toman el número restante. Del lado del usuario, recogeré el número de la misma manera y luego lo compararé. ¿Cómo puedo aplicar expresiones regulares para hacer esto? Cualquier pista sería útil, gracias.
Puedes jugar con expresiones regulares aquí: http://regexr.com/
Para su caso, solo desea ver los dígitos, por lo que simplemente elimine los dígitos que no son dígitos y la comparación debería funcionar:
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); } } }Simplemente puede extraer los números del parámetro y consultarlo. Entonces, en su ejemplo params.vehicle_number.match(/\d+/g).join('') le dará 030101 . Entonces tu consulta debe ser la siguiente:
'$and' : [ { 'booking_status' : { '$eq' : 'checked_in' }}, { 'vehicle_number' :params.vehicle_number.match(/\d+/g).join('') } ]