当前位置: 首页 > 面试题库 >

反斜杠-正则表达式-Javascript

宋高寒
2023-03-14
问题内容

我想构建一个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指出

语法错误:无效的正则表达式:/()$ | ^()/:未终止的组

当我只使用RegEx

 (\\)$|^(\\)

但是,使用RegEx

 (\\)$|^(\\)

提前致谢!

狮子座


问题答案:

您应在调用时使用正则表达式文字(/.../)而不是字符串文字('...'"..."replace。字符串对反斜杠有自己的解释,反斜杠会在正则表达式构造函数对其进行破解之前插入,因此您需要额外的引用级别。

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

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

但是,在正则表达式文字中,您还必须在反斜杠前面加上反斜杠,因为正斜杠是整件事的定界符:

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

或者,如果由于某种原因而对字符串的使用感到满意,这也应该起作用:

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

顺便提一句,当您的替代字符是单个字符时,(x|y)会显得过分杀伤;您可以只使用字符类:[xy]。在这种情况下,您得到以下信息:

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

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


 类似资料:
  • 我正在尝试用单个反斜杠替换所有双反斜杠。我想将替换为。我以为python将视为一个反斜杠,将视为带有两个反斜杠的字符串。但是当我尝试时 因此,我尝试用原始字符串切换替换字符串: 这不是我需要的。所以我只尝试了原始字符串中的一个反斜杠:

  • 如何写一个正则表达式来匹配这个< code>\"(一个反斜杠然后一个引号)?假设我有这样一个字符串: 我需要将所有替换为,因此结果如下所示: 这个不起作用:因为它只匹配引号。不知道如何使用反斜杠。我本可以先删除反斜杠,但我的字符串中还有其他反斜杠。

  • 问题内容: 我没有JavaScript方面的丰富经验,但是我正在尝试创建一个标记系统,而不是使用or ,而是使用。 我该如何使用而不是。我尝试做并添加,但是失败了。 问题答案: 您可以这样逃避它。 或只使用indexOf

  • 问题内容: 如何编写一个正则表达式来匹配它(反斜杠然后是引号)?假设我有一个像这样的字符串: 我需要将所有替换为,因此结果如下所示: 这是行不通的:因为它只匹配引号。不确定如何使用反斜杠。我本可以先删除反斜杠,但字符串中还有其他反斜杠。 问题答案: 如果你 不需要任何像预定义的字符类\ d,量词等正则表达式的机制 ,而不是其预期正则表达式使用其预计文字 两种方法都将替换 所有 出现的目标,但是将按

  • 问题内容: 我对正则表达式中的反斜杠感到困惑。在正则表达式中,a具有特殊含义,例如表示十进制数字。如果在反斜杠前面添加反斜杠,则该特殊含义会丢失。在正则表达式中,可以阅读: 也许最重要的元字符是反斜杠。与Python字符串文字一样,反斜杠后可以跟各种字符,以表示各种特殊序列。它也用于转义所有元字符,因此您仍可以按模式匹配它们。例如,如果您需要匹配或,则可以在它们前面加上反斜杠以删除其特殊含义:或。

  • 本文向大家介绍解决Python正则表达式匹配反斜杠''\''问题,包括了解决Python正则表达式匹配反斜杠''\''问题的使用技巧和注意事项,需要的朋友参考一下 在学习Python正则式的过程中,有一个问题一直困扰我,如何去匹配一个反斜杠(即“\”)? 一、引入 在学习了Python特殊字符和原始字符串之后,我觉得答案应该是这样的: 1)普通字符串:'\\' 2)原始字符串:r'\' 但事实上在