Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 href属性末尾文件名的正则表达式(用文件名替换文件路径)_Javascript_Regex - Fatal编程技术网

Javascript href属性末尾文件名的正则表达式(用文件名替换文件路径)

Javascript href属性末尾文件名的正则表达式(用文件名替换文件路径),javascript,regex,Javascript,Regex,我正在尝试使用regex将文件路径替换为文件名,但仍有困难 我用这样的文本列表: xlink:href="file://C:\x\y & DRAWINGS\z - CONTROLLED\a \testsvg-A01.svg" 我只想输出 xlink:href="testsvg-A01.svg" 我可以使用单独的正则表达式(javascript)和一些正则表达式来实现: let inQuotes = hrefs[0].match(/"(.*?)"/gm); inQuotes =

我正在尝试使用regex将文件路径替换为文件名,但仍有困难

我用这样的文本列表:

xlink:href="file://C:\x\y & DRAWINGS\z - CONTROLLED\a \testsvg-A01.svg"
我只想输出

xlink:href="testsvg-A01.svg"
我可以使用单独的正则表达式(javascript)和一些正则表达式来实现:

let inQuotes = hrefs[0].match(/"(.*?)"/gm);
inQuotes = inQuotes[0].match(/([^\\]+$)/gm);
inQuotes = inQuotes[0].replace(/"/g, "");
这将只返回文件名,但我想知道是否有办法将其替换为所需的样式

编辑:

我可以用这行代码一次性得到它:

let testHrefs = outText.match(/xlink:href="(.*?)"/gm)[0].match(/"(.*?)"/gm)[0].match(/([^\\]+$)/gm)[0].replace(/^/, 'xlink:href="');

但它看起来很糟糕,并不能完全满足我的要求。有什么建议吗?

您可以使用正则表达式删除不想保留的文本(即
href=“
和文件名之间的所有内容:

let href='xlink:href=“file://C:\\x\\y&;DRAWINGS\\z-CONTROLLED\\a\\testsvg-A01.svg”;
console.log(href);

console.log(href.replace(/href=“*?([^\\\/]+)$/,'href=“$1”);
您可以使用正则表达式删除不想保留的文本(即
href=“
和文件名之间的所有内容:

let href='xlink:href=“file://C:\\x\\y&;DRAWINGS\\z-CONTROLLED\\a\\testsvg-A01.svg”;
console.log(href);

console.log(href.replace(/href=“*?([^\\/]+)$/,'href=“$1”);
首先,请记住字符串中的反斜杠需要转义,因为反斜杠本身是转义字符。您可能希望将其转义为
\\


完成此操作后,您可以使用正则表达式(?首先,请记住字符串中的反斜杠需要转义,因为反斜杠本身是一个转义字符。您可能希望将其转义为
\


完成此操作后,您可以使用正则表达式对
\
进行正面查看(?谢谢!这太棒了。有什么方法可以对多行执行此操作吗?例如,如果文本中有一个HREF列表,我可以将它们全部更改为这种格式吗?我只做了一个字符串。拆分并替换了每一行,效果非常好。非常感谢Nick!@hammertime不用担心-很高兴我能提供帮助。如果这确实回答了您的问题,请回答ider标记接受的答案(上/下投票箭头下的复选标记)。看,谢谢!这太棒了。但是,有没有一种方法可以对多行执行此操作?例如,如果文本中有一个HREF列表,我可以将它们全部更改为这种格式吗?我只做了一个字符串。拆分并替换了每一行,效果非常好。非常感谢Nick!@hammertime别担心-很高兴我能提供帮助。如果这确实回答了您的问题,请回答考虑将答案标记为已接受(在上/下投票箭头下的复选标记)。