javascriptregexmaskedinput

Dynamic masked input according to data


I have a response and it returns "XXX-XXX" or "XX-XXXX"

const formatUnitCode = (value, format) => {}

So basically, I want to see as formatUnitCode("123456", "XX-XXX") --> "12-3456"

I don't want to use if else because it may come in the future as XX-XX-XX

Can someone help me create this function?

I tried to do with regex but I think it is not possible to pass variable instead of {2} and {4}

const formatCode = (val) => val.replace(/(\d{2})(\d{4})/g, "$1-$2");

Solution

  • Is this what you would like to do?

    const func = (val, first_digit) => {
        let regex = new RegExp("(\\d{" + first_digit + "})(\\d{" + (6-first_digit) + "})","g");
        return val.replace(regex,"$1-$2");
    };