regex - Backslashes - Regular Expression - Javascript -


i wanted build js function concatting list of arguments valid path (since not sure whether part of path given or without slashes)

this function:

concatpath = function() {     var path = "";     for(var = 0; < arguments.length; i++)   {         path += arguments[i].replace("(\\|/)$|^(\\|/)", "") + "/";     }     return path; } 

the used regex matched beginning , ending slashes , backslashes on http://regexpal.com function not work (regex not match). furthermore, chrome states

syntaxerror: invalid regular expression: /()$|^()/: unterminated group

when use regex

 (\\)$|^(\\) 

however, using regex

 (\\)$|^(\\) 

works fine.

is late or did missed special?

thanks in advance!

leo

you should use regular expression literal (/.../) instead of string literal ('...' or "...") in call replace. strings have own interpretation of backslashes kicks in before regular expression constructor gets crack @ it, need level of quoting.

match 1 backslash, regular expression literal: /\\/

match 1 backslash, regular expression in string: '\\\\'

but in regex literal, have put backslashes in front of forward slashes, since forward slashes delimiter whole thing:

path += arguments[i].replace(/(\\|\/)$|^(\\|\/)/, "") + "/"; 

or, if you're married use of strings reason, should work:

path += arguments[i].replace("(\\\\|/)$|^(\\\\|/)", "") + "/"; 

as side note, when alternatives single characters, (x|y) overkillish; can use character classes: [xy]. in case this:

path += arguments[i].replace(/[\\\/]$|^[\\\/]/, "") + "/";  path += arguments[i].replace("[\\\\/]$|^[\\\\/]", "") + "/"; 

Comments