为了账号安全,请及时绑定邮箱和手机立即绑定

反斜杠.正则表达式.Javascript

反斜杠.正则表达式.Javascript

萧十郎 2019-06-16 15:12:29
反斜杠.正则表达式.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 (\\)$|^(\\)效果很好。是太晚了还是我错过了什么特别的东西?提前谢谢!利奥
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您应该使用正则表达式文字(/.../)而不是字符串文本('...'"...")在呼叫.replace..字符串有自己对反斜杠的解释,在正则表达式构造函数破解反斜杠之前,需要额外的引用级别。

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

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

但是在regex文字中,还必须将反斜杠放在正斜杠前面,因为正斜杠是整件事情的分隔符:

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

或者,如果您由于某种原因而使用字符串,这也应该是有效的:

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

顺便提一句,当您的备选方案是单个字符时,(x|y)太过分了;您可以只使用字符类:[xy]..在这种情况下,你会得到这个:

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


查看完整回答
反对 回复 2019-06-16
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

试试这个.。使用[字符类]比较容易。匹配单个\使用您需要的javascript字符串\\\\,这可能就是发生了什么。

new Regexp('^[\\\\/]|[\\\\/]$')

您也可以尝试/^[\\\/]|[\\\/]$/g符号。

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


查看完整回答
反对 回复 2019-06-16
  • 2 回答
  • 0 关注
  • 1173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信