反斜杠.正则表达式.Javascript

反斜杠.正则表达式.Javascript

我想要构建一个JS函数,将一个参数列表连接到一个有效的路径(因为我无法确定路径的一部分是用斜杠还是不带斜线)

这是一个功能:

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

使用的RegEx匹配所有开始和结束的斜杠和反斜杠。http://regexpal.com但功能不能正常工作(RegEx不匹配)。此外,Chrome状态

SyntaxError:无效的正则表达式:/()$AC.26^()/:unended group

当我使用RegEx的时候

 (\\)$|^(\\)

然而,使用RegEx

 (\\)$|^(\\)

效果很好。

是太晚了还是我错过了什么特别的东西?

提前谢谢!

利奥


萧十郎
浏览 1177回答 2
2回答

幕布斯6054654

您应该使用正则表达式文字(/.../)而不是字符串文本('...'或"...")在呼叫.replace..字符串有自己对反斜杠的解释,在正则表达式构造函数破解反斜杠之前,需要额外的引用级别。匹配一个反斜杠,正则表达式文字:/\\/匹配一个反斜杠,一个字符串中的正则表达式:'\\\\'但是在regex文字中,还必须将反斜杠放在正斜杠前面,因为正斜杠是整件事情的分隔符:path&nbsp;+=&nbsp;arguments[i].replace(/(\\|\/)$|^(\\|\/)/,&nbsp;"")&nbsp;+&nbsp;"/";或者,如果您由于某种原因而使用字符串,这也应该是有效的:path&nbsp;+=&nbsp;arguments[i].replace("(\\\\|/)$|^(\\\\|/)",&nbsp;"")&nbsp;+&nbsp;"/";顺便提一句,当您的备选方案是单个字符时,(x|y)太过分了;您可以只使用字符类:[xy]..在这种情况下,你会得到这个:path&nbsp;+=&nbsp;arguments[i].replace(/[\\\/]$|^[\\\/]/,&nbsp;"")&nbsp;+&nbsp;"/";path&nbsp;+=&nbsp;arguments[i].replace("[\\\\/]$|^[\\\\/]",&nbsp;"")&nbsp;+&nbsp;"/";

小怪兽爱吃肉

试试这个.。使用[字符类]比较容易。匹配单个\使用您需要的javascript字符串\\\\,这可能就是发生了什么。new Regexp('^[\\\\/]|[\\\\/]$')您也可以尝试/^[\\\/]|[\\\/]$/g符号。s&nbsp;=&nbsp;'c:\\folder\\'console.log(s.replace(/^[\\\/]|[\\\/]$/g,&nbsp;''))
打开App,查看更多内容
随时随地看视频慕课网APP