'How to create a dynamic regex based on condition?

I'm trying to create a password generator where I can tick options (letters / numbers / special characters)...

For each ticked input, I want to generate a different regex pattern that accept wider range of characters, with at least white spaces accepted :

const alpha = alphaInputEl.checked;
const numeric = numericInputEl.checked;
const special = specialInputEl.checked;

return new RegExp(`/[
  ${alpha ? "a-zA-Z " : " "}
  ${numeric ? "0-9" : ""}
  ${special ? "$&+,:;=?@#|'<>.^*()%!-" : ""}
]/`)  

But I can't test against that regex. How can I build that regex dynamically ?



Solution 1:[1]

Answering my own question. I removed the slashes to make it work.

Doc ref: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp

Working version:

return new RegExp(`[${alpha ? "a-z-A-Z " : " "}${numeric ? "0-9" : ""}${special ? "$&+,:;=?@#|'<>.^*()%!-" : ""}]`)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1