Skip to content
Advertisement

Regexpr with a string

I have to get the result from this regular expression; the regular expression is a string in a variable:

const dataFileUrlRegExpr = new RegExp(            
    "\/home-affairs\/document\/download\/([\\w-]{1,})_en?filename=visa_statistics_for_consulates_20[0-9]{2}.xlsx"
);
href = '/home-affairs/document/download/75ecba81-12db-42b0-a628-795d3292c680_en?filename=visa_statistics_for_consulates_2020.xlsx'

xlslHrefRegExpResult = dataFileUrlRegExpr.exec(xlslHref);

but the xlslHrefRegExpResult variable is null.

If I use:

const dataFileUrlRegExpr = new RegExp(
    //home-affairs/document/download/([w-]{1,})_en?filename=visa_statistics_for_consulates_20[0-9]{2}.xlsx/g
);

without the string variable containing the expression, the result is achieved.
Where is the error using a string to build the regexp?

Answer

The correct code should be:

const dataFileUrlRegExpr = new RegExp(            
    "\/home-affairs\/document\/download\/([\w-]{1,})_en\?filename=visa_statistics_for_consulates_20[0-9]{2}.xlsx", 'g'
);
href = '/home-affairs/document/download/75ecba81-12db-42b0-a628-795d3292c680_en?filename=visa_statistics_for_consulates_2020.xlsx'

xlslHrefRegExpResult = dataFileUrlRegExpr.exec(href);
console.log(xlslHrefRegExpResult)

You had too many backslashes in [\\w-], and you were missing the backslashes before ?./

Advertisement