正则表达式匹配路径像/ ^ String1(任何东西)(String2或String3)/

时间:2017-02-08 19:49:37

标签: javascript regex

例如:

String1: Books>Programming>
String2: Databases>
String3: Languages>
Anything: ''

与以下正则表达式匹配:

/^Books>Programming>(Databases>|Languages>)/

现在,让我们说一切都不是空的,例如"无论1>",正则表达式应该怎样改变?

我试过lookaround,但没有运气,我可能会遗漏一些明显的东西。

2 个答案:

答案 0 :(得分:0)

如果我知道你想要匹配 图书>编程> [任何]>(数据库> |语言>) 之类的路径。如果是这样,你可以这样做。

let String1 = "Books>Programming>",  
    String2 = "Databases>",
    String3 = "Languages>"

let regex = new RegExp(`${String1}(.*?)>(?:${String2}|${String3})`)

此方法的好处是您可以随意修改变量并在执行代码时创建修改后的正则表达式,因此它不是硬编码的。

现在,如果您想测试字符串是否与此模式匹配,您可以使用:

regex.test("Books>Programming>whatever1>Databases>")

如果你想从中提取 whatever1 ,只需使用:

"Books>Programming>abc>Databases>".match(regex)[1]

答案 1 :(得分:0)

您可以使用String.prototype.split来实现这一点,而无需使用正则表达式。像这样:

function getParts(str) {
  var parts = str.split(">"); // split the string by ">"
  if(!parts[parts.length - 1].length) // if the last part is empty
    parts.pop(); // remove it
  
  return parts; // return the array of the parts (ordered by default)
}

console.log(getParts("Something>Books>Another thing>Programming>"));