使用javascript从给定单词向后匹配

时间:2014-08-31 06:46:38

标签: javascript regex string

使用Javascript,我需要在某些文本中找到短语的出现,然后匹配从中回到最后一次出现的5位数字的所有内容。 (或者至少那是我知道如何描述我需要的最佳方式)

请考虑以下文字:


24854

随机单词

结束词

34975

随机单词

结束词

47593

随机词

结束语

目标词

32302

随机单词

结束词


  • 鉴于上述情况,我希望我的正则表达式匹配从47593Target Word的所有内容。
  • 每场比赛都应包括47593Target Word
  • 它需要贪婪,因为我的实际文本中会有多个匹配项,我需要将它们全部返回到数组中。

这是我尝试过的: .match(/[0-9]{5}[\s\S]+?Target Word/g)

我的问题(与这些一样)是新线。为了匹配多行,我使用[\s\S],但这样做使正则表达式匹配从前5位数字到第一次出现Target Word的所有内容

如何更改此项以达到预期效果?我认为我需要使用lookbehind,但我发现的大多数例子对我来说都很困惑。

2 个答案:

答案 0 :(得分:4)

你可以使用负向前瞻,

[0-9]{5}(?:(?![0-9]{5})[\S\s])*?Target\s*Word

DEMO

上述否定前瞻(?:(?![0-9]{5})[\S\s])*断言在5位数后,将任何空格或非空格字符匹配零次或多次,但不得为5位数。

答案 1 :(得分:1)

如果随机单词中没有5位数字模式,您可以使用

/([\d]{5}(?:[^\d]{5})+?Target Word)/gm

demo here