javascript - 使用正则表达式匹配路径的中间?

标签 javascript regex

我有一个 var showNo,它是目录开头的输入。

示例:var showNo = "101B"

showNo 之后是包含空格和其他部门在网络上设置的其他垃圾的字符。

示例:/101B 海滩之旅/

我需要使用其中的子目录:

示例:/101B 海滩之旅/assets/tools/

有没有办法使用正则表达式和变量来避免扫描所有目录并尝试匹配前 4 个字符的子字符串?

最佳答案

var directory = str.match(/\/101B[^\/]+\//)[0];

将匹配以您变量开头的第一个目录名称。

更重要的是思路如下:

  1. 匹配以目录斜杠开头的前四个字符串文字。

  2. 然后匹配不是目录斜杠的任何字符。 “不是”用 ^ 表示。

  3. 然后再重复 2 0 次或更多次。

  4. 最后匹配目录斜杠。

我怀疑您在“任何不是”字符类方面遇到了麻烦。它有时会很棘手,但一旦你掌握了它,它就是一个非常有用的捷径。

--编辑--

实际上,在重新阅读时,我怀疑您在使用正则表达式中的变量时遇到了问题,对吗? 一旦你知道怎么做,这也很容易。

可以先构造成字符串:

var regex_string = "/" + showNo + "[^/]+/";

然后将其“编译”为您可以正常使用的正则表达式:

var regex_dir = RegExp(regex_string);

var directory = str.match(regex_dir);

希望这对您有所帮助!

关于javascript - 使用正则表达式匹配路径的中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544458/

相关文章:

JavaScript - 如何根据冒号获取字符串中的标签名称和 URL?

javascript - KeyCode === 13 动态元素有问题

java - 跨所有本地化格式识别所有数字的正则表达式

c# - 分割并添加空间

java - 在Java中使用正则表达式解析字符串行

javascript - 使用存储在变量中的字符串作为另一个变量的名称

javascript - 从具有给定 ID 的子数组中获取值

regex - Perl Regex - 打印匹配的条件正则表达式

JavaScript 正则表达式没有给我所有的数字

javascript - 如何在 JSON 中获取随机值