Ali
Ali

Reputation: 10453

Add regex to ignore /js /img and /css

I have this regular expression

// Look for /en/ or /en-US/ or /en_US/ on the URL
    var matches = req.url.match( /^\/([a-zA-Z]{2,3}([-_][a-zA-Z]{2})?)(\/|$)/ );

Now with the above regular express it will cause the problem with the URL such as:

http://mydomain.com/css/bootstrap.css

or

http://mydomain.com/js/jquery.js

because my regular expression is to strip off 2-3 characters from A-Z or a-z

My question is how would I add in to this regular expression to not strip off anything with

js or img or css or ext

Without impacting the original one.

I'm not so expert on regular expression :(

Upvotes: 0

Views: 230

Answers (3)

ic3b3rg
ic3b3rg

Reputation: 14927

Since you said you're using the regex to replace text, I changed it to a replace function. Also, you forced the regex to match the start of the string; I don't see how it would match anything with that. Anyway, here's my approach:

var result = req.url.replace(/\/([a-z]{2,3}([-_][a-z]{2})?)(?=\/|$)/i,
  function(s,t){
    switch(t){case"js":case"img":case"css":case"ext":return s;}
    return "";
  }
);

Upvotes: 0

Lex Podgorny
Lex Podgorny

Reputation: 2930

First of all you have not defined what exactly you are searching for. Define an array with lowercased common language codes (Common language codes) This way you'll know what to look for.

After that, convert your url to lowercase and replace all '_' with '-' and search for every member of the array in the resulting string using indexOf().

Upvotes: 0

mishik
mishik

Reputation: 10003

Negative lookahead?

var matches = req.url.match(/^\/(?!(js|css))([a-zA-Z]{2,3}([-_][a-zA-Z]{2})?)(\/|$)/ );

\ not followed by js or css

Upvotes: 1

Related Questions