我有一个 var showNo
,它是目录开头的输入。
示例:var showNo = "101B"
在 showNo
之后是包含空格和其他部门在网络上设置的其他垃圾的字符。
示例:/101B 海滩之旅/
我需要使用其中的子目录:
示例:/101B 海滩之旅/assets/tools/
有没有办法使用正则表达式和变量来避免扫描所有目录并尝试匹配前 4 个字符的子字符串?
最佳答案
var directory = str.match(/\/101B[^\/]+\//)[0];
将匹配以您变量开头的第一个目录名称。
更重要的是思路如下:
匹配以目录斜杠开头的前四个字符串文字。
然后匹配不是目录斜杠的任何字符。 “不是”用 ^ 表示。
然后再重复 2 0 次或更多次。
最后匹配目录斜杠。
我怀疑您在“任何不是”字符类方面遇到了麻烦。它有时会很棘手,但一旦你掌握了它,它就是一个非常有用的捷径。
--编辑--
实际上,在重新阅读时,我怀疑您在使用正则表达式中的变量时遇到了问题,对吗? 一旦你知道怎么做,这也很容易。
可以先构造成字符串:
var regex_string = "/" + showNo + "[^/]+/";
然后将其“编译”为您可以正常使用的正则表达式:
var regex_dir = RegExp(regex_string);
var directory = str.match(regex_dir);
希望这对您有所帮助!
关于javascript - 使用正则表达式匹配路径的中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544458/