Tengo una expresión regular donde compruebo que la entrada tiene un número de 6 dígitos. Puedo lograrlo con el siguiente refgex
/^\d{6}$/gm.test("123456")He usado esta expresión regular en varios lugares, así que estoy tratando de hacerlo como una función
function testNumber(number, digitLength = 6){ return /^\d{6}$/gm.test(number) }Ahora, en algunos lugares, digitLength es de 3 y en algunos lugares es 4, ahora, ¿cómo puedo interpolar digitLength en la expresión regular para poder pasar tanto digitLength en lugar de codificar 6 en la expresión regular?
Cualquier ayuda es apreciada
En lugar de una expresión regular dinámica, también podría hacerlo así:
function testNumber(number, digitLength = 6){ return number.length === digitLength // check expected length && /^\d+$/.test(number); // and that it is all digits }Estás buscando (tu expresión regular):
function testNumber(number, digitLength = 6){ return new RegExp(`^\\d{${digitLength}}$`, 'gm').test(number); }Refs: RegExp , Plantilla literales .
Lo mismo, pero optimizado:
Como notó @Thomas , no necesita el indicador g en su caso, porque siempre coincide con global (cadena completa), y tampoco necesita el indicador m , porque acepta entradas de una línea. Así que expresiones regulares como esta son suficientes:
function testNumber(number, digitLength = 6){ return new RegExp(`^\\d{${digitLength}}$`).test(number); }