Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反斜杠-正则表达式-Javascript_Javascript_Regex - Fatal编程技术网

反斜杠-正则表达式-Javascript

反斜杠-正则表达式-Javascript,javascript,regex,Javascript,Regex,我想构建一个JS函数,其中包含一个有效路径的参数列表(因为我无法确定路径的一部分是否带有斜杠) 这就是功能: concatPath = function() { var path = ""; for(var i = 0; i < arguments.length; i++) { path += arguments[i].replace("(\\|/)$|^(\\|/)", "") + "/"; } return path; } 但是,使

我想构建一个JS函数,其中包含一个有效路径的参数列表(因为我无法确定路径的一部分是否带有斜杠)

这就是功能:

concatPath = function() {
    var path = "";
    for(var i = 0; i < arguments.length; i++)   {
        path += arguments[i].replace("(\\|/)$|^(\\|/)", "") + "/";
    }
    return path;
}
但是,使用正则表达式

 (\\)$|^(\\)
很好

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

提前谢谢


狮子座试试这个。。。使用[角色类]更容易一些。要将单个
\
与javascript字符串相匹配,您需要
\\\\
,这可能就是正在发生的事情

newregexp('^[\\\\/]\[\\\\/]$)

您也可以尝试使用
/^[\\\/]\[\\\/]$/g
符号

s = 'c:\\folder\\'
console.log(s.replace(/^[\\\/]|[\\\/]$/g, ''))

在调用
replace
时,应该使用正则表达式文本(
/…/
)而不是字符串文本(
'.'.'
“…
)。字符串对反斜杠有自己的解释,在正则表达式构造函数出现裂缝之前,反斜杠就会出现,因此需要额外的引号

匹配一个反斜杠,正则表达式文字:
/\\/

在字符串中匹配一个反斜杠正则表达式:
'\\\'

但在正则表达式文字中,还必须在正斜杠前面加反斜杠,因为正斜杠是整个过程的分隔符:

path += arguments[i].replace(/(\\|\/)$|^(\\|\/)/, "") + "/";
或者,如果出于某种原因,您已经习惯于使用字符串,这也应该起作用:

path += arguments[i].replace("(\\\\|/)$|^(\\\\|/)", "") + "/";
作为补充说明,当您的备选方案是单个字符时,
(x | y)
太过熟练了;您可以只使用字符类:
[xy]
。在这种情况下,您会得到以下结果:

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

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

非常感谢,你能告诉我为什么我要用“\\\\”吗?我想“\\”就足够了,因为我需要一个反斜杠来防止它从“还要注意StackOverflow注释中是否需要反斜杠…:)当您使用字符串形式时,您将经历两个解析器—Javascript解析器,它从源代码构建字符串,以及Regexp解析器,它从字符串构建正则表达式。regexp必须有两个反斜杠,但为了从文本中获得字符串中的单个反斜杠,必须将其加倍。加起来,这意味着四个反斜杠。试试这个:
alert(“-->\\\ \ \ \ \ \”不客气!你应该接受一个答案(我的或代理-j的),这样人们将来更有可能回答你的问题。使用字符串可以让你输入变量。\用例
path += arguments[i].replace(/[\\\/]$|^[\\\/]/, "") + "/";

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