正则表达式在管道之间匹配字符

时间:2018-12-17 17:32:21

标签: regex

如果我有一个包含用管道(|)分隔的“字段”的字符串,如下所示:

  

123 | 123 | 123 | FOOBAR || 123 | 123 | 123

管道(|之间的字符将改变的地方,但是管道的数量和字段的位置将始终相同(即,总是在|第三次出现之后直接直到|的第4次出现

如何从上述示例中获取“ FOOBAR”?

非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用类似的方法并选择第一组:

^.*?\|.*?\|.*?\|(.*?)\|
  • ^:字符串的开头
  • ():分组
  • 。*? :懒惰的量词
  • \ | :转义符

^[^|]*\|[^|]*\|[^|]*\|([^|]*)\|
  • [^ |]:不等于竖线字符

答案 1 :(得分:0)

const matches = '123|123|123|FOOBAR|123|123|123'.match(/(.{3}\|){3}(.*?)\|/);

console.log(matches[2]);