Javascript 如何检索从特定字符串开始到最后一个字符数组的字符
第1行:Javascript 如何检索从特定字符串开始到最后一个字符数组的字符,javascript,Javascript,第1行:10016/Documents/abc.pdf 第二行:10016-10017/10017/Documents/folder1/folder2/xyz.pdf 我试图检索从/Documents开始但没有最后一部分(文件名)的所有字符 在第1行中,我想检索/Documents/ 在第2行中,我想检索/Documents/folder1/folder2/ 我试过了 var temp1 = FullPath.split("/Documents/")[0]; var A_F
10016/Documents/abc.pdf
第二行:10016-10017/10017/Documents/folder1/folder2/xyz.pdf
我试图检索从/Documents开始但没有最后一部分(文件名)的所有字符
在第1行中,我想检索/Documents/
在第2行中,我想检索/Documents/folder1/folder2/
我试过了
var temp1 = FullPath.split("/Documents/")[0];
var A_Fpath = temp1.split("/");
A_Fpath = A_Fpath[A_Fpath.length - 1];
一个简单的正则表达式就可以做到这一点:
/\/文档*\//
/启动正则表达式
\/按字面意思匹配“/”(\是转义/保留字符)
文档字面上与单词“Documents”(区分大小写)匹配
.*匹配0个或多个字符(任意字符)
\/按字面意思匹配“/”
/结束正则表达式
这是因为正则表达式将尝试匹配最长的字符串
与正则表达式匹配的字符数。
const row1=“10016/Documents/abc.pdf”;
const row2=“10016-10017/10017/Documents/folder1/folder2/xyz.pdf”;
const regex=/\/Documents.*\/;
const val1=row1.match(regex)[0];
const val2=row2.match(regex)[0];
控制台日志(val1);
log(val2);
如果javascript有一个成熟的正则表达式引擎,可以使用一个积极的、不捕获的前瞻组来确定何时停止
由于javascript缺乏这一点,简单、清晰、高效的方法是根本不使用正则表达式。算法很简单:
- 在源文本中找到[first/leftmost]
,然后/Documents
- 查找源文本中最后/最右边出现的
/
- 处理以下两种特殊情况:
- 源字符串根本不包含
,并且/Documents
- 最右边的
是/
中的/Documents
/
- 源字符串根本不包含
- 如果出现上述特殊情况,则返回所需的子字符串
从
扩展到并包括最后一个/文档
/
这也有一个值得称赞的好处,那就是对于那些必须了解您试图实现的目标的人来说,很容易理解。文档是恒定的吗?您的尝试会返回什么?是的,文档是恒定的。对于temp1 10016,我的代码返回10016-10017;对于a_fpath,我的代码返回10016和10016-10017。谢谢,如果filename有“文档”?即使文件名是/has“Documents”,也可以这样做,因为它专门在“Documents”一词后面查找
“/”
,并且文件名不能有“/”
…请查看我的答案中的Regex101链接