Reputation: 916
I am having a regex where i check the input is having 6 digit number. I am able to achieve it with the below refgex
/^\d{6}$/gm.test("123456")
I have used this regex in multiple places so I am trying to make it as a function
function testNumber(number, digitLength = 6){
return /^\d{6}$/gm.test(number)
}
Now in some places the digitLength is of 3 and in some places its 4, now how can i interpolate the digitLength in the regex so i can pass as much the digitLength instead of hardcoding 6 in the regex.
Any help is appreciated
Upvotes: 2
Views: 2437
Reputation: 1116
You are looking for (your regex):
function testNumber(number, digitLength = 6){
return new RegExp(`^\\d{${digitLength}}$`, 'gm').test(number);
}
Refs: RegExp, Template literals.
Same, but optimized:
As @Thomas noticed, you don't need g
flag in your case, because you always match global (full string), and you don't need m
flag too, because you accept one-line inputs. So regex like this is enough:
function testNumber(number, digitLength = 6){
return new RegExp(`^\\d{${digitLength}}$`).test(number);
}
Upvotes: 2
Reputation: 12637
Instead of a dynamic regex you could also do it like this:
function testNumber(number, digitLength = 6){
return number.length === digitLength // check expected length
&& /^\d+$/.test(number); // and that it is all digits
}
Upvotes: 2