Home > OS >  JavaScript regex issue for folders names
JavaScript regex issue for folders names

Time:09-01

I'm trying to create a regex to allow alphanumeric strings with hyphens, underscores and spaces allowed. The string must start with a number or a letter and be a maximum total of 20.

Here is my code:

    var regex = /^[a-zA-Z0-9] ([a-zA-Z0-9_ -]){0,20}$/;
    var newName = "12345678901234567890233_pm";
    if (regex.test(newName)) {
        console.log('yes');
    }else{
        console.log('no');
    } 

My code always returns yes. Is my regex wrong please?

Thanks.

CodePudding user response:

Your use of the quantifier in the first character class does not do what you seem to think it does - it’s actually not at all necessary in this context. Additionally, since the first character class accounts for 1 of the 20 maximum characters, reduce the maximum quantifier in the second character class to 19:

    var regex = /^[a-zA-Z0-9][a-zA-Z0-9_ -]{0,19}$/;
    var newName = "12345678901234567890233_pm";
    if (regex.test(newName)) {
        console.log('yes');
    }else{
        console.log('no');
    } 

  • Related