正则表达式删除文件路径

时间:2018-07-04 09:46:12

标签: javascript regex string match filepath

我要删除此文件路径的某些部分:

  

C:\ Users \ room \ Desktop \ dev \ myapp \ node / 数据 // test / nested / 74201820018PM-AI2.jpg

我想要在“数据”之后的路径名,例如 /test/nested/74201820018PM-AI2.jpg

编辑:此文件路径来自Windows操作系统。我希望正则表达式可用于Windows或Linux。

3 个答案:

答案 0 :(得分:2)

您只需要将 a regex 与匹配组一起使用,如下所示:

/\/data\/(.+)$/

说明:

  • \/与字符/按字面值匹配(区分大小写)
  • data从字面上匹配字符数据(区分大小写)
  • \/与字符/按字面值匹配(区分大小写)

第一捕获组(。+)

  • .+匹配任何字符(行终止符除外)-量词-+匹配一次和无限制次数,尽可能多地匹配,并根据需要返回(贪婪)

  • $在字符串末尾或行之前断言位置 终止符位于字符串的末尾(如果有的话)

注意:

要使其与WindowsLinux路径兼容,您需要更新 the regex ,以便同时使用/和{{1 }}:

\

演示:

[\/\\]data[\/\\](.+)$

编辑:

要删除此文件的第一部分var str = "C:\Users\room\Desktop\dev\myapp\node/data//test/nested/74201820018PM-AI2.jpg"; var match = str.match(/\/data\/(.+)$/); console.log(match[1]);

您可以使用 an inversed regex 来匹配path的第一部分,并使用path将其从string中删除:

.replace(regex, '')

演示:

^(.+[\/\\]data[\/\\])

答案 1 :(得分:0)

尝试一下。它检查其余字符是否以字符串data/

开头

var str = "C:\Users\room\Desktop\dev\myapp\node/data//test/nested/74201820018PM-AI2.jpg"; 
console.log(str.match(/(?<=data\/).+$/)[0]);

答案 2 :(得分:0)

恐怕:

    路径中的
  • data有时可能会更改为其他字符串,
  • 实际的“切入点”为双斜杠(不太可能更改)。

因此您的代码应:

  • 匹配字符串的开头部分,直至双斜杠(包括),
  • 替换用斜杠

类似result = my_path.replace(/.*\/\//,"/");